{"version":3,"file":"scripts/main.js","sources":["webpack:///webpack/bootstrap bbbe758b9ee6197906c8","webpack:///external \"jQuery\"","webpack:///node_modules/html-entities/lib/html5-entities.js","webpack:///resources/assets/build/helpers/hmr-client.js","webpack:///node_modules/webpack-hot-middleware/client.js","webpack:///node_modules/webpack/buildin/module.js","webpack:///node_modules/querystring-es3/index.js","webpack:///node_modules/querystring-es3/decode.js","webpack:///node_modules/querystring-es3/encode.js","webpack:///node_modules/strip-ansi/index.js","webpack:///node_modules/ansi-regex/index.js","webpack:///node_modules/webpack-hot-middleware/client-overlay.js","webpack:///node_modules/ansi-html/index.js","webpack:///node_modules/html-entities/index.js","webpack:///node_modules/html-entities/lib/xml-entities.js","webpack:///node_modules/html-entities/lib/html4-entities.js","webpack:///node_modules/webpack-hot-middleware/process-update.js","webpack:///node_modules/webpack/buildin/global.js","webpack:///node_modules/swiper/dist/js/swiper.esm.bundle.js","webpack:///./styles/main.scss?b043","webpack:///node_modules/gsap/TweenLite.js","webpack:///node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///resources/assets/scripts/main.js","webpack:///node_modules/picturefill/dist/picturefill.min.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///node_modules/lazysizes/plugins/bgset/ls.bgset.min.js","webpack:///node_modules/lazysizes/lazysizes.js","webpack:///node_modules/lazysizes/lazysizes.min.js","webpack:///node_modules/vide/dist/jquery.vide.min.js","webpack:///resources/assets/scripts/util/Router.js","webpack:///resources/assets/scripts/util/camelCase.js","webpack:///resources/assets/scripts/routes/common.js","webpack:///node_modules/gsap/TweenMax.js","webpack:///node_modules/gsap/ScrollToPlugin.js","webpack:///node_modules/slim-select/dist/slimselect.min.js","webpack:///node_modules/baguettebox.js/dist/baguetteBox.min.js","webpack:///resources/assets/scripts/leap/map/api.js","webpack:///resources/assets/scripts/leap/map/map.js","webpack:///resources/assets/scripts/leap/components/accordion.js","webpack:///resources/assets/scripts/leap/components/gallery.js","webpack:///resources/assets/scripts/leap/components/slider.js","webpack:///node_modules/dom7/dist/dom7.modular.js","webpack:///resources/assets/scripts/leap/components/hero-slider.js","webpack:///resources/assets/scripts/leap/components/featured-blocks-slider.js","webpack:///resources/assets/scripts/leap/components/flyout.js","webpack:///resources/assets/scripts/leap/components/sticky-header.js","webpack:///resources/assets/scripts/leap/utilities.js","webpack:///resources/assets/scripts/leap/components/nav.js","webpack:///resources/assets/scripts/leap/tools/magic.js","webpack:///node_modules/scrollmagic/scrollmagic/uncompressed/ScrollMagic.js","webpack:///node_modules/hoverintent/dist/hoverintent.min.js","webpack:///node_modules/priority-nav/dist/priority-nav.min.js","webpack:///resources/assets/scripts/routes/home.js","webpack:///resources/assets/scripts/routes/about.js","webpack:///./styles/main.scss","webpack:///node_modules/css-loader/lib/url/escape.js","webpack:///node_modules/css-loader/lib/css-base.js","webpack:///./images/symbols/chevron-up.svg","webpack:////Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/node_modules/style-loader/lib/addStyles.js","webpack:///node_modules/style-loader/lib/urls.js"],"sourcesContent":[" \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = \r\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) { // eslint-disable-line no-unused-vars\r\n \t\thotAddUpdateChunk(chunkId, moreModules);\r\n \t\tif(parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\r\n \t} ;\r\n \t\r\n \tfunction hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars\r\n \t\tvar head = document.getElementsByTagName(\"head\")[0];\r\n \t\tvar script = document.createElement(\"script\");\r\n \t\tscript.type = \"text/javascript\";\r\n \t\tscript.charset = \"utf-8\";\r\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\r\n \t\t;\r\n \t\thead.appendChild(script);\r\n \t}\r\n \t\r\n \tfunction hotDownloadManifest(requestTimeout) { // eslint-disable-line no-unused-vars\r\n \t\trequestTimeout = requestTimeout || 10000;\r\n \t\treturn new Promise(function(resolve, reject) {\r\n \t\t\tif(typeof XMLHttpRequest === \"undefined\")\r\n \t\t\t\treturn reject(new Error(\"No browser support\"));\r\n \t\t\ttry {\r\n \t\t\t\tvar request = new XMLHttpRequest();\r\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\r\n \t\t\t\trequest.open(\"GET\", requestPath, true);\r\n \t\t\t\trequest.timeout = requestTimeout;\r\n \t\t\t\trequest.send(null);\r\n \t\t\t} catch(err) {\r\n \t\t\t\treturn reject(err);\r\n \t\t\t}\r\n \t\t\trequest.onreadystatechange = function() {\r\n \t\t\t\tif(request.readyState !== 4) return;\r\n \t\t\t\tif(request.status === 0) {\r\n \t\t\t\t\t// timeout\r\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" timed out.\"));\r\n \t\t\t\t} else if(request.status === 404) {\r\n \t\t\t\t\t// no update available\r\n \t\t\t\t\tresolve();\r\n \t\t\t\t} else if(request.status !== 200 && request.status !== 304) {\r\n \t\t\t\t\t// other failure\r\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\r\n \t\t\t\t} else {\r\n \t\t\t\t\t// success\r\n \t\t\t\t\ttry {\r\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\r\n \t\t\t\t\t} catch(e) {\r\n \t\t\t\t\t\treject(e);\r\n \t\t\t\t\t\treturn;\r\n \t\t\t\t\t}\r\n \t\t\t\t\tresolve(update);\r\n \t\t\t\t}\r\n \t\t\t};\r\n \t\t});\r\n \t}\r\n\n \t\r\n \t\r\n \tvar hotApplyOnUpdate = true;\r\n \tvar hotCurrentHash = \"bbbe758b9ee6197906c8\"; // eslint-disable-line no-unused-vars\r\n \tvar hotRequestTimeout = 10000;\r\n \tvar hotCurrentModuleData = {};\r\n \tvar hotCurrentChildModule; // eslint-disable-line no-unused-vars\r\n \tvar hotCurrentParents = []; // eslint-disable-line no-unused-vars\r\n \tvar hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars\r\n \t\r\n \tfunction hotCreateRequire(moduleId) { // eslint-disable-line no-unused-vars\r\n \t\tvar me = installedModules[moduleId];\r\n \t\tif(!me) return __webpack_require__;\r\n \t\tvar fn = function(request) {\r\n \t\t\tif(me.hot.active) {\r\n \t\t\t\tif(installedModules[request]) {\r\n \t\t\t\t\tif(installedModules[request].parents.indexOf(moduleId) < 0)\r\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\r\n \t\t\t\t} else {\r\n \t\t\t\t\thotCurrentParents = [moduleId];\r\n \t\t\t\t\thotCurrentChildModule = request;\r\n \t\t\t\t}\r\n \t\t\t\tif(me.children.indexOf(request) < 0)\r\n \t\t\t\t\tme.children.push(request);\r\n \t\t\t} else {\r\n \t\t\t\tconsole.warn(\"[HMR] unexpected require(\" + request + \") from disposed module \" + moduleId);\r\n \t\t\t\thotCurrentParents = [];\r\n \t\t\t}\r\n \t\t\treturn __webpack_require__(request);\r\n \t\t};\r\n \t\tvar ObjectFactory = function ObjectFactory(name) {\r\n \t\t\treturn {\r\n \t\t\t\tconfigurable: true,\r\n \t\t\t\tenumerable: true,\r\n \t\t\t\tget: function() {\r\n \t\t\t\t\treturn __webpack_require__[name];\r\n \t\t\t\t},\r\n \t\t\t\tset: function(value) {\r\n \t\t\t\t\t__webpack_require__[name] = value;\r\n \t\t\t\t}\r\n \t\t\t};\r\n \t\t};\r\n \t\tfor(var name in __webpack_require__) {\r\n \t\t\tif(Object.prototype.hasOwnProperty.call(__webpack_require__, name) && name !== \"e\") {\r\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\r\n \t\t\t}\r\n \t\t}\r\n \t\tfn.e = function(chunkId) {\r\n \t\t\tif(hotStatus === \"ready\")\r\n \t\t\t\thotSetStatus(\"prepare\");\r\n \t\t\thotChunksLoading++;\r\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\r\n \t\t\t\tfinishChunkLoading();\r\n \t\t\t\tthrow err;\r\n \t\t\t});\r\n \t\r\n \t\t\tfunction finishChunkLoading() {\r\n \t\t\t\thotChunksLoading--;\r\n \t\t\t\tif(hotStatus === \"prepare\") {\r\n \t\t\t\t\tif(!hotWaitingFilesMap[chunkId]) {\r\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(hotChunksLoading === 0 && hotWaitingFiles === 0) {\r\n \t\t\t\t\t\thotUpdateDownloaded();\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\treturn fn;\r\n \t}\r\n \t\r\n \tfunction hotCreateModule(moduleId) { // eslint-disable-line no-unused-vars\r\n \t\tvar hot = {\r\n \t\t\t// private stuff\r\n \t\t\t_acceptedDependencies: {},\r\n \t\t\t_declinedDependencies: {},\r\n \t\t\t_selfAccepted: false,\r\n \t\t\t_selfDeclined: false,\r\n \t\t\t_disposeHandlers: [],\r\n \t\t\t_main: hotCurrentChildModule !== moduleId,\r\n \t\r\n \t\t\t// Module API\r\n \t\t\tactive: true,\r\n \t\t\taccept: function(dep, callback) {\r\n \t\t\t\tif(typeof dep === \"undefined\")\r\n \t\t\t\t\thot._selfAccepted = true;\r\n \t\t\t\telse if(typeof dep === \"function\")\r\n \t\t\t\t\thot._selfAccepted = dep;\r\n \t\t\t\telse if(typeof dep === \"object\")\r\n \t\t\t\t\tfor(var i = 0; i < dep.length; i++)\r\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\r\n \t\t\t\telse\r\n \t\t\t\t\thot._acceptedDependencies[dep] = callback || function() {};\r\n \t\t\t},\r\n \t\t\tdecline: function(dep) {\r\n \t\t\t\tif(typeof dep === \"undefined\")\r\n \t\t\t\t\thot._selfDeclined = true;\r\n \t\t\t\telse if(typeof dep === \"object\")\r\n \t\t\t\t\tfor(var i = 0; i < dep.length; i++)\r\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\r\n \t\t\t\telse\r\n \t\t\t\t\thot._declinedDependencies[dep] = true;\r\n \t\t\t},\r\n \t\t\tdispose: function(callback) {\r\n \t\t\t\thot._disposeHandlers.push(callback);\r\n \t\t\t},\r\n \t\t\taddDisposeHandler: function(callback) {\r\n \t\t\t\thot._disposeHandlers.push(callback);\r\n \t\t\t},\r\n \t\t\tremoveDisposeHandler: function(callback) {\r\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\r\n \t\t\t\tif(idx >= 0) hot._disposeHandlers.splice(idx, 1);\r\n \t\t\t},\r\n \t\r\n \t\t\t// Management API\r\n \t\t\tcheck: hotCheck,\r\n \t\t\tapply: hotApply,\r\n \t\t\tstatus: function(l) {\r\n \t\t\t\tif(!l) return hotStatus;\r\n \t\t\t\thotStatusHandlers.push(l);\r\n \t\t\t},\r\n \t\t\taddStatusHandler: function(l) {\r\n \t\t\t\thotStatusHandlers.push(l);\r\n \t\t\t},\r\n \t\t\tremoveStatusHandler: function(l) {\r\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\r\n \t\t\t\tif(idx >= 0) hotStatusHandlers.splice(idx, 1);\r\n \t\t\t},\r\n \t\r\n \t\t\t//inherit from previous dispose call\r\n \t\t\tdata: hotCurrentModuleData[moduleId]\r\n \t\t};\r\n \t\thotCurrentChildModule = undefined;\r\n \t\treturn hot;\r\n \t}\r\n \t\r\n \tvar hotStatusHandlers = [];\r\n \tvar hotStatus = \"idle\";\r\n \t\r\n \tfunction hotSetStatus(newStatus) {\r\n \t\thotStatus = newStatus;\r\n \t\tfor(var i = 0; i < hotStatusHandlers.length; i++)\r\n \t\t\thotStatusHandlers[i].call(null, newStatus);\r\n \t}\r\n \t\r\n \t// while downloading\r\n \tvar hotWaitingFiles = 0;\r\n \tvar hotChunksLoading = 0;\r\n \tvar hotWaitingFilesMap = {};\r\n \tvar hotRequestedFilesMap = {};\r\n \tvar hotAvailableFilesMap = {};\r\n \tvar hotDeferred;\r\n \t\r\n \t// The update info\r\n \tvar hotUpdate, hotUpdateNewHash;\r\n \t\r\n \tfunction toModuleId(id) {\r\n \t\tvar isNumber = (+id) + \"\" === id;\r\n \t\treturn isNumber ? +id : id;\r\n \t}\r\n \t\r\n \tfunction hotCheck(apply) {\r\n \t\tif(hotStatus !== \"idle\") throw new Error(\"check() is only allowed in idle status\");\r\n \t\thotApplyOnUpdate = apply;\r\n \t\thotSetStatus(\"check\");\r\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\r\n \t\t\tif(!update) {\r\n \t\t\t\thotSetStatus(\"idle\");\r\n \t\t\t\treturn null;\r\n \t\t\t}\r\n \t\t\thotRequestedFilesMap = {};\r\n \t\t\thotWaitingFilesMap = {};\r\n \t\t\thotAvailableFilesMap = update.c;\r\n \t\t\thotUpdateNewHash = update.h;\r\n \t\r\n \t\t\thotSetStatus(\"prepare\");\r\n \t\t\tvar promise = new Promise(function(resolve, reject) {\r\n \t\t\t\thotDeferred = {\r\n \t\t\t\t\tresolve: resolve,\r\n \t\t\t\t\treject: reject\r\n \t\t\t\t};\r\n \t\t\t});\r\n \t\t\thotUpdate = {};\r\n \t\t\tvar chunkId = 0;\r\n \t\t\t{ // eslint-disable-line no-lone-blocks\r\n \t\t\t\t/*globals chunkId */\r\n \t\t\t\thotEnsureUpdateChunk(chunkId);\r\n \t\t\t}\r\n \t\t\tif(hotStatus === \"prepare\" && hotChunksLoading === 0 && hotWaitingFiles === 0) {\r\n \t\t\t\thotUpdateDownloaded();\r\n \t\t\t}\r\n \t\t\treturn promise;\r\n \t\t});\r\n \t}\r\n \t\r\n \tfunction hotAddUpdateChunk(chunkId, moreModules) { // eslint-disable-line no-unused-vars\r\n \t\tif(!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\r\n \t\t\treturn;\r\n \t\thotRequestedFilesMap[chunkId] = false;\r\n \t\tfor(var moduleId in moreModules) {\r\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\r\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\r\n \t\t\t}\r\n \t\t}\r\n \t\tif(--hotWaitingFiles === 0 && hotChunksLoading === 0) {\r\n \t\t\thotUpdateDownloaded();\r\n \t\t}\r\n \t}\r\n \t\r\n \tfunction hotEnsureUpdateChunk(chunkId) {\r\n \t\tif(!hotAvailableFilesMap[chunkId]) {\r\n \t\t\thotWaitingFilesMap[chunkId] = true;\r\n \t\t} else {\r\n \t\t\thotRequestedFilesMap[chunkId] = true;\r\n \t\t\thotWaitingFiles++;\r\n \t\t\thotDownloadUpdateChunk(chunkId);\r\n \t\t}\r\n \t}\r\n \t\r\n \tfunction hotUpdateDownloaded() {\r\n \t\thotSetStatus(\"ready\");\r\n \t\tvar deferred = hotDeferred;\r\n \t\thotDeferred = null;\r\n \t\tif(!deferred) return;\r\n \t\tif(hotApplyOnUpdate) {\r\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\r\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\r\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\r\n \t\t\tPromise.resolve().then(function() {\r\n \t\t\t\treturn hotApply(hotApplyOnUpdate);\r\n \t\t\t}).then(\r\n \t\t\t\tfunction(result) {\r\n \t\t\t\t\tdeferred.resolve(result);\r\n \t\t\t\t},\r\n \t\t\t\tfunction(err) {\r\n \t\t\t\t\tdeferred.reject(err);\r\n \t\t\t\t}\r\n \t\t\t);\r\n \t\t} else {\r\n \t\t\tvar outdatedModules = [];\r\n \t\t\tfor(var id in hotUpdate) {\r\n \t\t\t\tif(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\r\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tdeferred.resolve(outdatedModules);\r\n \t\t}\r\n \t}\r\n \t\r\n \tfunction hotApply(options) {\r\n \t\tif(hotStatus !== \"ready\") throw new Error(\"apply() is only allowed in ready status\");\r\n \t\toptions = options || {};\r\n \t\r\n \t\tvar cb;\r\n \t\tvar i;\r\n \t\tvar j;\r\n \t\tvar module;\r\n \t\tvar moduleId;\r\n \t\r\n \t\tfunction getAffectedStuff(updateModuleId) {\r\n \t\t\tvar outdatedModules = [updateModuleId];\r\n \t\t\tvar outdatedDependencies = {};\r\n \t\r\n \t\t\tvar queue = outdatedModules.slice().map(function(id) {\r\n \t\t\t\treturn {\r\n \t\t\t\t\tchain: [id],\r\n \t\t\t\t\tid: id\r\n \t\t\t\t};\r\n \t\t\t});\r\n \t\t\twhile(queue.length > 0) {\r\n \t\t\t\tvar queueItem = queue.pop();\r\n \t\t\t\tvar moduleId = queueItem.id;\r\n \t\t\t\tvar chain = queueItem.chain;\r\n \t\t\t\tmodule = installedModules[moduleId];\r\n \t\t\t\tif(!module || module.hot._selfAccepted)\r\n \t\t\t\t\tcontinue;\r\n \t\t\t\tif(module.hot._selfDeclined) {\r\n \t\t\t\t\treturn {\r\n \t\t\t\t\t\ttype: \"self-declined\",\r\n \t\t\t\t\t\tchain: chain,\r\n \t\t\t\t\t\tmoduleId: moduleId\r\n \t\t\t\t\t};\r\n \t\t\t\t}\r\n \t\t\t\tif(module.hot._main) {\r\n \t\t\t\t\treturn {\r\n \t\t\t\t\t\ttype: \"unaccepted\",\r\n \t\t\t\t\t\tchain: chain,\r\n \t\t\t\t\t\tmoduleId: moduleId\r\n \t\t\t\t\t};\r\n \t\t\t\t}\r\n \t\t\t\tfor(var i = 0; i < module.parents.length; i++) {\r\n \t\t\t\t\tvar parentId = module.parents[i];\r\n \t\t\t\t\tvar parent = installedModules[parentId];\r\n \t\t\t\t\tif(!parent) continue;\r\n \t\t\t\t\tif(parent.hot._declinedDependencies[moduleId]) {\r\n \t\t\t\t\t\treturn {\r\n \t\t\t\t\t\t\ttype: \"declined\",\r\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\r\n \t\t\t\t\t\t\tmoduleId: moduleId,\r\n \t\t\t\t\t\t\tparentId: parentId\r\n \t\t\t\t\t\t};\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(outdatedModules.indexOf(parentId) >= 0) continue;\r\n \t\t\t\t\tif(parent.hot._acceptedDependencies[moduleId]) {\r\n \t\t\t\t\t\tif(!outdatedDependencies[parentId])\r\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\r\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\r\n \t\t\t\t\t\tcontinue;\r\n \t\t\t\t\t}\r\n \t\t\t\t\tdelete outdatedDependencies[parentId];\r\n \t\t\t\t\toutdatedModules.push(parentId);\r\n \t\t\t\t\tqueue.push({\r\n \t\t\t\t\t\tchain: chain.concat([parentId]),\r\n \t\t\t\t\t\tid: parentId\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\r\n \t\t\treturn {\r\n \t\t\t\ttype: \"accepted\",\r\n \t\t\t\tmoduleId: updateModuleId,\r\n \t\t\t\toutdatedModules: outdatedModules,\r\n \t\t\t\toutdatedDependencies: outdatedDependencies\r\n \t\t\t};\r\n \t\t}\r\n \t\r\n \t\tfunction addAllToSet(a, b) {\r\n \t\t\tfor(var i = 0; i < b.length; i++) {\r\n \t\t\t\tvar item = b[i];\r\n \t\t\t\tif(a.indexOf(item) < 0)\r\n \t\t\t\t\ta.push(item);\r\n \t\t\t}\r\n \t\t}\r\n \t\r\n \t\t// at begin all updates modules are outdated\r\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\r\n \t\tvar outdatedDependencies = {};\r\n \t\tvar outdatedModules = [];\r\n \t\tvar appliedUpdate = {};\r\n \t\r\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\r\n \t\t\tconsole.warn(\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\");\r\n \t\t};\r\n \t\r\n \t\tfor(var id in hotUpdate) {\r\n \t\t\tif(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\r\n \t\t\t\tmoduleId = toModuleId(id);\r\n \t\t\t\tvar result;\r\n \t\t\t\tif(hotUpdate[id]) {\r\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tresult = {\r\n \t\t\t\t\t\ttype: \"disposed\",\r\n \t\t\t\t\t\tmoduleId: id\r\n \t\t\t\t\t};\r\n \t\t\t\t}\r\n \t\t\t\tvar abortError = false;\r\n \t\t\t\tvar doApply = false;\r\n \t\t\t\tvar doDispose = false;\r\n \t\t\t\tvar chainInfo = \"\";\r\n \t\t\t\tif(result.chain) {\r\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\r\n \t\t\t\t}\r\n \t\t\t\tswitch(result.type) {\r\n \t\t\t\t\tcase \"self-declined\":\r\n \t\t\t\t\t\tif(options.onDeclined)\r\n \t\t\t\t\t\t\toptions.onDeclined(result);\r\n \t\t\t\t\t\tif(!options.ignoreDeclined)\r\n \t\t\t\t\t\t\tabortError = new Error(\"Aborted because of self decline: \" + result.moduleId + chainInfo);\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\tcase \"declined\":\r\n \t\t\t\t\t\tif(options.onDeclined)\r\n \t\t\t\t\t\t\toptions.onDeclined(result);\r\n \t\t\t\t\t\tif(!options.ignoreDeclined)\r\n \t\t\t\t\t\t\tabortError = new Error(\"Aborted because of declined dependency: \" + result.moduleId + \" in \" + result.parentId + chainInfo);\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\tcase \"unaccepted\":\r\n \t\t\t\t\t\tif(options.onUnaccepted)\r\n \t\t\t\t\t\t\toptions.onUnaccepted(result);\r\n \t\t\t\t\t\tif(!options.ignoreUnaccepted)\r\n \t\t\t\t\t\t\tabortError = new Error(\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo);\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\tcase \"accepted\":\r\n \t\t\t\t\t\tif(options.onAccepted)\r\n \t\t\t\t\t\t\toptions.onAccepted(result);\r\n \t\t\t\t\t\tdoApply = true;\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\tcase \"disposed\":\r\n \t\t\t\t\t\tif(options.onDisposed)\r\n \t\t\t\t\t\t\toptions.onDisposed(result);\r\n \t\t\t\t\t\tdoDispose = true;\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\tdefault:\r\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\r\n \t\t\t\t}\r\n \t\t\t\tif(abortError) {\r\n \t\t\t\t\thotSetStatus(\"abort\");\r\n \t\t\t\t\treturn Promise.reject(abortError);\r\n \t\t\t\t}\r\n \t\t\t\tif(doApply) {\r\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\r\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\r\n \t\t\t\t\tfor(moduleId in result.outdatedDependencies) {\r\n \t\t\t\t\t\tif(Object.prototype.hasOwnProperty.call(result.outdatedDependencies, moduleId)) {\r\n \t\t\t\t\t\t\tif(!outdatedDependencies[moduleId])\r\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\r\n \t\t\t\t\t\t\taddAllToSet(outdatedDependencies[moduleId], result.outdatedDependencies[moduleId]);\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\tif(doDispose) {\r\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\r\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n \t\r\n \t\t// Store self accepted outdated modules to require them later by the module system\r\n \t\tvar outdatedSelfAcceptedModules = [];\r\n \t\tfor(i = 0; i < outdatedModules.length; i++) {\r\n \t\t\tmoduleId = outdatedModules[i];\r\n \t\t\tif(installedModules[moduleId] && installedModules[moduleId].hot._selfAccepted)\r\n \t\t\t\toutdatedSelfAcceptedModules.push({\r\n \t\t\t\t\tmodule: moduleId,\r\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\r\n \t\t\t\t});\r\n \t\t}\r\n \t\r\n \t\t// Now in \"dispose\" phase\r\n \t\thotSetStatus(\"dispose\");\r\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\r\n \t\t\tif(hotAvailableFilesMap[chunkId] === false) {\r\n \t\t\t\thotDisposeChunk(chunkId);\r\n \t\t\t}\r\n \t\t});\r\n \t\r\n \t\tvar idx;\r\n \t\tvar queue = outdatedModules.slice();\r\n \t\twhile(queue.length > 0) {\r\n \t\t\tmoduleId = queue.pop();\r\n \t\t\tmodule = installedModules[moduleId];\r\n \t\t\tif(!module) continue;\r\n \t\r\n \t\t\tvar data = {};\r\n \t\r\n \t\t\t// Call dispose handlers\r\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\r\n \t\t\tfor(j = 0; j < disposeHandlers.length; j++) {\r\n \t\t\t\tcb = disposeHandlers[j];\r\n \t\t\t\tcb(data);\r\n \t\t\t}\r\n \t\t\thotCurrentModuleData[moduleId] = data;\r\n \t\r\n \t\t\t// disable module (this disables requires from this module)\r\n \t\t\tmodule.hot.active = false;\r\n \t\r\n \t\t\t// remove module from cache\r\n \t\t\tdelete installedModules[moduleId];\r\n \t\r\n \t\t\t// when disposing there is no need to call dispose handler\r\n \t\t\tdelete outdatedDependencies[moduleId];\r\n \t\r\n \t\t\t// remove \"parents\" references from all children\r\n \t\t\tfor(j = 0; j < module.children.length; j++) {\r\n \t\t\t\tvar child = installedModules[module.children[j]];\r\n \t\t\t\tif(!child) continue;\r\n \t\t\t\tidx = child.parents.indexOf(moduleId);\r\n \t\t\t\tif(idx >= 0) {\r\n \t\t\t\t\tchild.parents.splice(idx, 1);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n \t\r\n \t\t// remove outdated dependency from module children\r\n \t\tvar dependency;\r\n \t\tvar moduleOutdatedDependencies;\r\n \t\tfor(moduleId in outdatedDependencies) {\r\n \t\t\tif(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) {\r\n \t\t\t\tmodule = installedModules[moduleId];\r\n \t\t\t\tif(module) {\r\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\r\n \t\t\t\t\tfor(j = 0; j < moduleOutdatedDependencies.length; j++) {\r\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\r\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\r\n \t\t\t\t\t\tif(idx >= 0) module.children.splice(idx, 1);\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 \t\t// Not in \"apply\" phase\r\n \t\thotSetStatus(\"apply\");\r\n \t\r\n \t\thotCurrentHash = hotUpdateNewHash;\r\n \t\r\n \t\t// insert new code\r\n \t\tfor(moduleId in appliedUpdate) {\r\n \t\t\tif(Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\r\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\r\n \t\t\t}\r\n \t\t}\r\n \t\r\n \t\t// call accept handlers\r\n \t\tvar error = null;\r\n \t\tfor(moduleId in outdatedDependencies) {\r\n \t\t\tif(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) {\r\n \t\t\t\tmodule = installedModules[moduleId];\r\n \t\t\t\tif(module) {\r\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\r\n \t\t\t\t\tvar callbacks = [];\r\n \t\t\t\t\tfor(i = 0; i < moduleOutdatedDependencies.length; i++) {\r\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\r\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\r\n \t\t\t\t\t\tif(cb) {\r\n \t\t\t\t\t\t\tif(callbacks.indexOf(cb) >= 0) continue;\r\n \t\t\t\t\t\t\tcallbacks.push(cb);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t\tfor(i = 0; i < callbacks.length; i++) {\r\n \t\t\t\t\t\tcb = callbacks[i];\r\n \t\t\t\t\t\ttry {\r\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\r\n \t\t\t\t\t\t} catch(err) {\r\n \t\t\t\t\t\t\tif(options.onErrored) {\r\n \t\t\t\t\t\t\t\toptions.onErrored({\r\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\r\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\r\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\r\n \t\t\t\t\t\t\t\t\terror: err\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\tif(!options.ignoreErrored) {\r\n \t\t\t\t\t\t\t\tif(!error)\r\n \t\t\t\t\t\t\t\t\terror = err;\r\n \t\t\t\t\t\t\t}\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}\r\n \t\t}\r\n \t\r\n \t\t// Load self accepted modules\r\n \t\tfor(i = 0; i < outdatedSelfAcceptedModules.length; i++) {\r\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\r\n \t\t\tmoduleId = item.module;\r\n \t\t\thotCurrentParents = [moduleId];\r\n \t\t\ttry {\r\n \t\t\t\t__webpack_require__(moduleId);\r\n \t\t\t} catch(err) {\r\n \t\t\t\tif(typeof item.errorHandler === \"function\") {\r\n \t\t\t\t\ttry {\r\n \t\t\t\t\t\titem.errorHandler(err);\r\n \t\t\t\t\t} catch(err2) {\r\n \t\t\t\t\t\tif(options.onErrored) {\r\n \t\t\t\t\t\t\toptions.onErrored({\r\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\r\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\r\n \t\t\t\t\t\t\t\terror: err2,\r\n \t\t\t\t\t\t\t\torginalError: err, // TODO remove in webpack 4\r\n \t\t\t\t\t\t\t\toriginalError: err\r\n \t\t\t\t\t\t\t});\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(!options.ignoreErrored) {\r\n \t\t\t\t\t\t\tif(!error)\r\n \t\t\t\t\t\t\t\terror = err2;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(!error)\r\n \t\t\t\t\t\t\terror = err;\r\n \t\t\t\t\t}\r\n \t\t\t\t} else {\r\n \t\t\t\t\tif(options.onErrored) {\r\n \t\t\t\t\t\toptions.onErrored({\r\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\r\n \t\t\t\t\t\t\tmoduleId: moduleId,\r\n \t\t\t\t\t\t\terror: err\r\n \t\t\t\t\t\t});\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(!options.ignoreErrored) {\r\n \t\t\t\t\t\tif(!error)\r\n \t\t\t\t\t\t\terror = err;\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 \t\t// handle errors in accept handlers and self accepted module load\r\n \t\tif(error) {\r\n \t\t\thotSetStatus(\"fail\");\r\n \t\t\treturn Promise.reject(error);\r\n \t\t}\r\n \t\r\n \t\thotSetStatus(\"idle\");\r\n \t\treturn new Promise(function(resolve) {\r\n \t\t\tresolve(outdatedModules);\r\n \t\t});\r\n \t}\r\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"http://localhost:3000/wp-content/themes/friends-leap/dist/\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(21)(__webpack_require__.s = 21);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap bbbe758b9ee6197906c8","module.exports = jQuery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 0\n// module chunks = 0 1","var ENTITIES = [['Aacute', [193]], ['aacute', [225]], ['Abreve', [258]], ['abreve', [259]], ['ac', [8766]], ['acd', [8767]], ['acE', [8766, 819]], ['Acirc', [194]], ['acirc', [226]], ['acute', [180]], ['Acy', [1040]], ['acy', [1072]], ['AElig', [198]], ['aelig', [230]], ['af', [8289]], ['Afr', [120068]], ['afr', [120094]], ['Agrave', [192]], ['agrave', [224]], ['alefsym', [8501]], ['aleph', [8501]], ['Alpha', [913]], ['alpha', [945]], ['Amacr', [256]], ['amacr', [257]], ['amalg', [10815]], ['amp', [38]], ['AMP', [38]], ['andand', [10837]], ['And', [10835]], ['and', [8743]], ['andd', [10844]], ['andslope', [10840]], ['andv', [10842]], ['ang', [8736]], ['ange', [10660]], ['angle', [8736]], ['angmsdaa', [10664]], ['angmsdab', [10665]], ['angmsdac', [10666]], ['angmsdad', [10667]], ['angmsdae', [10668]], ['angmsdaf', [10669]], ['angmsdag', [10670]], ['angmsdah', [10671]], ['angmsd', [8737]], ['angrt', [8735]], ['angrtvb', [8894]], ['angrtvbd', [10653]], ['angsph', [8738]], ['angst', [197]], ['angzarr', [9084]], ['Aogon', [260]], ['aogon', [261]], ['Aopf', [120120]], ['aopf', [120146]], ['apacir', [10863]], ['ap', [8776]], ['apE', [10864]], ['ape', [8778]], ['apid', [8779]], ['apos', [39]], ['ApplyFunction', [8289]], ['approx', [8776]], ['approxeq', [8778]], ['Aring', [197]], ['aring', [229]], ['Ascr', [119964]], ['ascr', [119990]], ['Assign', [8788]], ['ast', [42]], ['asymp', [8776]], ['asympeq', [8781]], ['Atilde', [195]], ['atilde', [227]], ['Auml', [196]], ['auml', [228]], ['awconint', [8755]], ['awint', [10769]], ['backcong', [8780]], ['backepsilon', [1014]], ['backprime', [8245]], ['backsim', [8765]], ['backsimeq', [8909]], ['Backslash', [8726]], ['Barv', [10983]], ['barvee', [8893]], ['barwed', [8965]], ['Barwed', [8966]], ['barwedge', [8965]], ['bbrk', [9141]], ['bbrktbrk', [9142]], ['bcong', [8780]], ['Bcy', [1041]], ['bcy', [1073]], ['bdquo', [8222]], ['becaus', [8757]], ['because', [8757]], ['Because', [8757]], ['bemptyv', [10672]], ['bepsi', [1014]], ['bernou', [8492]], ['Bernoullis', [8492]], ['Beta', [914]], ['beta', [946]], ['beth', [8502]], ['between', [8812]], ['Bfr', [120069]], ['bfr', [120095]], ['bigcap', [8898]], ['bigcirc', [9711]], ['bigcup', [8899]], ['bigodot', [10752]], ['bigoplus', [10753]], ['bigotimes', [10754]], ['bigsqcup', [10758]], ['bigstar', [9733]], ['bigtriangledown', [9661]], ['bigtriangleup', [9651]], ['biguplus', [10756]], ['bigvee', [8897]], ['bigwedge', [8896]], ['bkarow', [10509]], ['blacklozenge', [10731]], ['blacksquare', [9642]], ['blacktriangle', [9652]], ['blacktriangledown', [9662]], ['blacktriangleleft', [9666]], ['blacktriangleright', [9656]], ['blank', [9251]], ['blk12', [9618]], ['blk14', [9617]], ['blk34', [9619]], ['block', [9608]], ['bne', [61, 8421]], ['bnequiv', [8801, 8421]], ['bNot', [10989]], ['bnot', [8976]], ['Bopf', [120121]], ['bopf', [120147]], ['bot', [8869]], ['bottom', [8869]], ['bowtie', [8904]], ['boxbox', [10697]], ['boxdl', [9488]], ['boxdL', [9557]], ['boxDl', [9558]], ['boxDL', [9559]], ['boxdr', [9484]], ['boxdR', [9554]], ['boxDr', [9555]], ['boxDR', [9556]], ['boxh', [9472]], ['boxH', [9552]], ['boxhd', [9516]], ['boxHd', [9572]], ['boxhD', [9573]], ['boxHD', [9574]], ['boxhu', [9524]], ['boxHu', [9575]], ['boxhU', [9576]], ['boxHU', [9577]], ['boxminus', [8863]], ['boxplus', [8862]], ['boxtimes', [8864]], ['boxul', [9496]], ['boxuL', [9563]], ['boxUl', [9564]], ['boxUL', [9565]], ['boxur', [9492]], ['boxuR', [9560]], ['boxUr', [9561]], ['boxUR', [9562]], ['boxv', [9474]], ['boxV', [9553]], ['boxvh', [9532]], ['boxvH', [9578]], ['boxVh', [9579]], ['boxVH', [9580]], ['boxvl', [9508]], ['boxvL', [9569]], ['boxVl', [9570]], ['boxVL', [9571]], ['boxvr', [9500]], ['boxvR', [9566]], ['boxVr', [9567]], ['boxVR', [9568]], ['bprime', [8245]], ['breve', [728]], ['Breve', [728]], ['brvbar', [166]], ['bscr', [119991]], ['Bscr', [8492]], ['bsemi', [8271]], ['bsim', [8765]], ['bsime', [8909]], ['bsolb', [10693]], ['bsol', [92]], ['bsolhsub', [10184]], ['bull', [8226]], ['bullet', [8226]], ['bump', [8782]], ['bumpE', [10926]], ['bumpe', [8783]], ['Bumpeq', [8782]], ['bumpeq', [8783]], ['Cacute', [262]], ['cacute', [263]], ['capand', [10820]], ['capbrcup', [10825]], ['capcap', [10827]], ['cap', [8745]], ['Cap', [8914]], ['capcup', [10823]], ['capdot', [10816]], ['CapitalDifferentialD', [8517]], ['caps', [8745, 65024]], ['caret', [8257]], ['caron', [711]], ['Cayleys', [8493]], ['ccaps', [10829]], ['Ccaron', [268]], ['ccaron', [269]], ['Ccedil', [199]], ['ccedil', [231]], ['Ccirc', [264]], ['ccirc', [265]], ['Cconint', [8752]], ['ccups', [10828]], ['ccupssm', [10832]], ['Cdot', [266]], ['cdot', [267]], ['cedil', [184]], ['Cedilla', [184]], ['cemptyv', [10674]], ['cent', [162]], ['centerdot', [183]], ['CenterDot', [183]], ['cfr', [120096]], ['Cfr', [8493]], ['CHcy', [1063]], ['chcy', [1095]], ['check', [10003]], ['checkmark', [10003]], ['Chi', [935]], ['chi', [967]], ['circ', [710]], ['circeq', [8791]], ['circlearrowleft', [8634]], ['circlearrowright', [8635]], ['circledast', [8859]], ['circledcirc', [8858]], ['circleddash', [8861]], ['CircleDot', [8857]], ['circledR', [174]], ['circledS', [9416]], ['CircleMinus', [8854]], ['CirclePlus', [8853]], ['CircleTimes', [8855]], ['cir', [9675]], ['cirE', [10691]], ['cire', [8791]], ['cirfnint', [10768]], ['cirmid', [10991]], ['cirscir', [10690]], ['ClockwiseContourIntegral', [8754]], ['clubs', [9827]], ['clubsuit', [9827]], ['colon', [58]], ['Colon', [8759]], ['Colone', [10868]], ['colone', [8788]], ['coloneq', [8788]], ['comma', [44]], ['commat', [64]], ['comp', [8705]], ['compfn', [8728]], ['complement', [8705]], ['complexes', [8450]], ['cong', [8773]], ['congdot', [10861]], ['Congruent', [8801]], ['conint', [8750]], ['Conint', [8751]], ['ContourIntegral', [8750]], ['copf', [120148]], ['Copf', [8450]], ['coprod', [8720]], ['Coproduct', [8720]], ['copy', [169]], ['COPY', [169]], ['copysr', [8471]], ['CounterClockwiseContourIntegral', [8755]], ['crarr', [8629]], ['cross', [10007]], ['Cross', [10799]], ['Cscr', [119966]], ['cscr', [119992]], ['csub', [10959]], ['csube', [10961]], ['csup', [10960]], ['csupe', [10962]], ['ctdot', [8943]], ['cudarrl', [10552]], ['cudarrr', [10549]], ['cuepr', [8926]], ['cuesc', [8927]], ['cularr', [8630]], ['cularrp', [10557]], ['cupbrcap', [10824]], ['cupcap', [10822]], ['CupCap', [8781]], ['cup', [8746]], ['Cup', [8915]], ['cupcup', [10826]], ['cupdot', [8845]], ['cupor', [10821]], ['cups', [8746, 65024]], ['curarr', [8631]], ['curarrm', [10556]], ['curlyeqprec', [8926]], ['curlyeqsucc', [8927]], ['curlyvee', [8910]], ['curlywedge', [8911]], ['curren', [164]], ['curvearrowleft', [8630]], ['curvearrowright', [8631]], ['cuvee', [8910]], ['cuwed', [8911]], ['cwconint', [8754]], ['cwint', [8753]], ['cylcty', [9005]], ['dagger', [8224]], ['Dagger', [8225]], ['daleth', [8504]], ['darr', [8595]], ['Darr', [8609]], ['dArr', [8659]], ['dash', [8208]], ['Dashv', [10980]], ['dashv', [8867]], ['dbkarow', [10511]], ['dblac', [733]], ['Dcaron', [270]], ['dcaron', [271]], ['Dcy', [1044]], ['dcy', [1076]], ['ddagger', [8225]], ['ddarr', [8650]], ['DD', [8517]], ['dd', [8518]], ['DDotrahd', [10513]], ['ddotseq', [10871]], ['deg', [176]], ['Del', [8711]], ['Delta', [916]], ['delta', [948]], ['demptyv', [10673]], ['dfisht', [10623]], ['Dfr', [120071]], ['dfr', [120097]], ['dHar', [10597]], ['dharl', [8643]], ['dharr', [8642]], ['DiacriticalAcute', [180]], ['DiacriticalDot', [729]], ['DiacriticalDoubleAcute', [733]], ['DiacriticalGrave', [96]], ['DiacriticalTilde', [732]], ['diam', [8900]], ['diamond', [8900]], ['Diamond', [8900]], ['diamondsuit', [9830]], ['diams', [9830]], ['die', [168]], ['DifferentialD', [8518]], ['digamma', [989]], ['disin', [8946]], ['div', [247]], ['divide', [247]], ['divideontimes', [8903]], ['divonx', [8903]], ['DJcy', [1026]], ['djcy', [1106]], ['dlcorn', [8990]], ['dlcrop', [8973]], ['dollar', [36]], ['Dopf', [120123]], ['dopf', [120149]], ['Dot', [168]], ['dot', [729]], ['DotDot', [8412]], ['doteq', [8784]], ['doteqdot', [8785]], ['DotEqual', [8784]], ['dotminus', [8760]], ['dotplus', [8724]], ['dotsquare', [8865]], ['doublebarwedge', [8966]], ['DoubleContourIntegral', [8751]], ['DoubleDot', [168]], ['DoubleDownArrow', [8659]], ['DoubleLeftArrow', [8656]], ['DoubleLeftRightArrow', [8660]], ['DoubleLeftTee', [10980]], ['DoubleLongLeftArrow', [10232]], ['DoubleLongLeftRightArrow', [10234]], ['DoubleLongRightArrow', [10233]], ['DoubleRightArrow', [8658]], ['DoubleRightTee', [8872]], ['DoubleUpArrow', [8657]], ['DoubleUpDownArrow', [8661]], ['DoubleVerticalBar', [8741]], ['DownArrowBar', [10515]], ['downarrow', [8595]], ['DownArrow', [8595]], ['Downarrow', [8659]], ['DownArrowUpArrow', [8693]], ['DownBreve', [785]], ['downdownarrows', [8650]], ['downharpoonleft', [8643]], ['downharpoonright', [8642]], ['DownLeftRightVector', [10576]], ['DownLeftTeeVector', [10590]], ['DownLeftVectorBar', [10582]], ['DownLeftVector', [8637]], ['DownRightTeeVector', [10591]], ['DownRightVectorBar', [10583]], ['DownRightVector', [8641]], ['DownTeeArrow', [8615]], ['DownTee', [8868]], ['drbkarow', [10512]], ['drcorn', [8991]], ['drcrop', [8972]], ['Dscr', [119967]], ['dscr', [119993]], ['DScy', [1029]], ['dscy', [1109]], ['dsol', [10742]], ['Dstrok', [272]], ['dstrok', [273]], ['dtdot', [8945]], ['dtri', [9663]], ['dtrif', [9662]], ['duarr', [8693]], ['duhar', [10607]], ['dwangle', [10662]], ['DZcy', [1039]], ['dzcy', [1119]], ['dzigrarr', [10239]], ['Eacute', [201]], ['eacute', [233]], ['easter', [10862]], ['Ecaron', [282]], ['ecaron', [283]], ['Ecirc', [202]], ['ecirc', [234]], ['ecir', [8790]], ['ecolon', [8789]], ['Ecy', [1069]], ['ecy', [1101]], ['eDDot', [10871]], ['Edot', [278]], ['edot', [279]], ['eDot', [8785]], ['ee', [8519]], ['efDot', [8786]], ['Efr', [120072]], ['efr', [120098]], ['eg', [10906]], ['Egrave', [200]], ['egrave', [232]], ['egs', [10902]], ['egsdot', [10904]], ['el', [10905]], ['Element', [8712]], ['elinters', [9191]], ['ell', [8467]], ['els', [10901]], ['elsdot', [10903]], ['Emacr', [274]], ['emacr', [275]], ['empty', [8709]], ['emptyset', [8709]], ['EmptySmallSquare', [9723]], ['emptyv', [8709]], ['EmptyVerySmallSquare', [9643]], ['emsp13', [8196]], ['emsp14', [8197]], ['emsp', [8195]], ['ENG', [330]], ['eng', [331]], ['ensp', [8194]], ['Eogon', [280]], ['eogon', [281]], ['Eopf', [120124]], ['eopf', [120150]], ['epar', [8917]], ['eparsl', [10723]], ['eplus', [10865]], ['epsi', [949]], ['Epsilon', [917]], ['epsilon', [949]], ['epsiv', [1013]], ['eqcirc', [8790]], ['eqcolon', [8789]], ['eqsim', [8770]], ['eqslantgtr', [10902]], ['eqslantless', [10901]], ['Equal', [10869]], ['equals', [61]], ['EqualTilde', [8770]], ['equest', [8799]], ['Equilibrium', [8652]], ['equiv', [8801]], ['equivDD', [10872]], ['eqvparsl', [10725]], ['erarr', [10609]], ['erDot', [8787]], ['escr', [8495]], ['Escr', [8496]], ['esdot', [8784]], ['Esim', [10867]], ['esim', [8770]], ['Eta', [919]], ['eta', [951]], ['ETH', [208]], ['eth', [240]], ['Euml', [203]], ['euml', [235]], ['euro', [8364]], ['excl', [33]], ['exist', [8707]], ['Exists', [8707]], ['expectation', [8496]], ['exponentiale', [8519]], ['ExponentialE', [8519]], ['fallingdotseq', [8786]], ['Fcy', [1060]], ['fcy', [1092]], ['female', [9792]], ['ffilig', [64259]], ['fflig', [64256]], ['ffllig', [64260]], ['Ffr', [120073]], ['ffr', [120099]], ['filig', [64257]], ['FilledSmallSquare', [9724]], ['FilledVerySmallSquare', [9642]], ['fjlig', [102, 106]], ['flat', [9837]], ['fllig', [64258]], ['fltns', [9649]], ['fnof', [402]], ['Fopf', [120125]], ['fopf', [120151]], ['forall', [8704]], ['ForAll', [8704]], ['fork', [8916]], ['forkv', [10969]], ['Fouriertrf', [8497]], ['fpartint', [10765]], ['frac12', [189]], ['frac13', [8531]], ['frac14', [188]], ['frac15', [8533]], ['frac16', [8537]], ['frac18', [8539]], ['frac23', [8532]], ['frac25', [8534]], ['frac34', [190]], ['frac35', [8535]], ['frac38', [8540]], ['frac45', [8536]], ['frac56', [8538]], ['frac58', [8541]], ['frac78', [8542]], ['frasl', [8260]], ['frown', [8994]], ['fscr', [119995]], ['Fscr', [8497]], ['gacute', [501]], ['Gamma', [915]], ['gamma', [947]], ['Gammad', [988]], ['gammad', [989]], ['gap', [10886]], ['Gbreve', [286]], ['gbreve', [287]], ['Gcedil', [290]], ['Gcirc', [284]], ['gcirc', [285]], ['Gcy', [1043]], ['gcy', [1075]], ['Gdot', [288]], ['gdot', [289]], ['ge', [8805]], ['gE', [8807]], ['gEl', [10892]], ['gel', [8923]], ['geq', [8805]], ['geqq', [8807]], ['geqslant', [10878]], ['gescc', [10921]], ['ges', [10878]], ['gesdot', [10880]], ['gesdoto', [10882]], ['gesdotol', [10884]], ['gesl', [8923, 65024]], ['gesles', [10900]], ['Gfr', [120074]], ['gfr', [120100]], ['gg', [8811]], ['Gg', [8921]], ['ggg', [8921]], ['gimel', [8503]], ['GJcy', [1027]], ['gjcy', [1107]], ['gla', [10917]], ['gl', [8823]], ['glE', [10898]], ['glj', [10916]], ['gnap', [10890]], ['gnapprox', [10890]], ['gne', [10888]], ['gnE', [8809]], ['gneq', [10888]], ['gneqq', [8809]], ['gnsim', [8935]], ['Gopf', [120126]], ['gopf', [120152]], ['grave', [96]], ['GreaterEqual', [8805]], ['GreaterEqualLess', [8923]], ['GreaterFullEqual', [8807]], ['GreaterGreater', [10914]], ['GreaterLess', [8823]], ['GreaterSlantEqual', [10878]], ['GreaterTilde', [8819]], ['Gscr', [119970]], ['gscr', [8458]], ['gsim', [8819]], ['gsime', [10894]], ['gsiml', [10896]], ['gtcc', [10919]], ['gtcir', [10874]], ['gt', [62]], ['GT', [62]], ['Gt', [8811]], ['gtdot', [8919]], ['gtlPar', [10645]], ['gtquest', [10876]], ['gtrapprox', [10886]], ['gtrarr', [10616]], ['gtrdot', [8919]], ['gtreqless', [8923]], ['gtreqqless', [10892]], ['gtrless', [8823]], ['gtrsim', [8819]], ['gvertneqq', [8809, 65024]], ['gvnE', [8809, 65024]], ['Hacek', [711]], ['hairsp', [8202]], ['half', [189]], ['hamilt', [8459]], ['HARDcy', [1066]], ['hardcy', [1098]], ['harrcir', [10568]], ['harr', [8596]], ['hArr', [8660]], ['harrw', [8621]], ['Hat', [94]], ['hbar', [8463]], ['Hcirc', [292]], ['hcirc', [293]], ['hearts', [9829]], ['heartsuit', [9829]], ['hellip', [8230]], ['hercon', [8889]], ['hfr', [120101]], ['Hfr', [8460]], ['HilbertSpace', [8459]], ['hksearow', [10533]], ['hkswarow', [10534]], ['hoarr', [8703]], ['homtht', [8763]], ['hookleftarrow', [8617]], ['hookrightarrow', [8618]], ['hopf', [120153]], ['Hopf', [8461]], ['horbar', [8213]], ['HorizontalLine', [9472]], ['hscr', [119997]], ['Hscr', [8459]], ['hslash', [8463]], ['Hstrok', [294]], ['hstrok', [295]], ['HumpDownHump', [8782]], ['HumpEqual', [8783]], ['hybull', [8259]], ['hyphen', [8208]], ['Iacute', [205]], ['iacute', [237]], ['ic', [8291]], ['Icirc', [206]], ['icirc', [238]], ['Icy', [1048]], ['icy', [1080]], ['Idot', [304]], ['IEcy', [1045]], ['iecy', [1077]], ['iexcl', [161]], ['iff', [8660]], ['ifr', [120102]], ['Ifr', [8465]], ['Igrave', [204]], ['igrave', [236]], ['ii', [8520]], ['iiiint', [10764]], ['iiint', [8749]], ['iinfin', [10716]], ['iiota', [8489]], ['IJlig', [306]], ['ijlig', [307]], ['Imacr', [298]], ['imacr', [299]], ['image', [8465]], ['ImaginaryI', [8520]], ['imagline', [8464]], ['imagpart', [8465]], ['imath', [305]], ['Im', [8465]], ['imof', [8887]], ['imped', [437]], ['Implies', [8658]], ['incare', [8453]], ['in', [8712]], ['infin', [8734]], ['infintie', [10717]], ['inodot', [305]], ['intcal', [8890]], ['int', [8747]], ['Int', [8748]], ['integers', [8484]], ['Integral', [8747]], ['intercal', [8890]], ['Intersection', [8898]], ['intlarhk', [10775]], ['intprod', [10812]], ['InvisibleComma', [8291]], ['InvisibleTimes', [8290]], ['IOcy', [1025]], ['iocy', [1105]], ['Iogon', [302]], ['iogon', [303]], ['Iopf', [120128]], ['iopf', [120154]], ['Iota', [921]], ['iota', [953]], ['iprod', [10812]], ['iquest', [191]], ['iscr', [119998]], ['Iscr', [8464]], ['isin', [8712]], ['isindot', [8949]], ['isinE', [8953]], ['isins', [8948]], ['isinsv', [8947]], ['isinv', [8712]], ['it', [8290]], ['Itilde', [296]], ['itilde', [297]], ['Iukcy', [1030]], ['iukcy', [1110]], ['Iuml', [207]], ['iuml', [239]], ['Jcirc', [308]], ['jcirc', [309]], ['Jcy', [1049]], ['jcy', [1081]], ['Jfr', [120077]], ['jfr', [120103]], ['jmath', [567]], ['Jopf', [120129]], ['jopf', [120155]], ['Jscr', [119973]], ['jscr', [119999]], ['Jsercy', [1032]], ['jsercy', [1112]], ['Jukcy', [1028]], ['jukcy', [1108]], ['Kappa', [922]], ['kappa', [954]], ['kappav', [1008]], ['Kcedil', [310]], ['kcedil', [311]], ['Kcy', [1050]], ['kcy', [1082]], ['Kfr', [120078]], ['kfr', [120104]], ['kgreen', [312]], ['KHcy', [1061]], ['khcy', [1093]], ['KJcy', [1036]], ['kjcy', [1116]], ['Kopf', [120130]], ['kopf', [120156]], ['Kscr', [119974]], ['kscr', [120000]], ['lAarr', [8666]], ['Lacute', [313]], ['lacute', [314]], ['laemptyv', [10676]], ['lagran', [8466]], ['Lambda', [923]], ['lambda', [955]], ['lang', [10216]], ['Lang', [10218]], ['langd', [10641]], ['langle', [10216]], ['lap', [10885]], ['Laplacetrf', [8466]], ['laquo', [171]], ['larrb', [8676]], ['larrbfs', [10527]], ['larr', [8592]], ['Larr', [8606]], ['lArr', [8656]], ['larrfs', [10525]], ['larrhk', [8617]], ['larrlp', [8619]], ['larrpl', [10553]], ['larrsim', [10611]], ['larrtl', [8610]], ['latail', [10521]], ['lAtail', [10523]], ['lat', [10923]], ['late', [10925]], ['lates', [10925, 65024]], ['lbarr', [10508]], ['lBarr', [10510]], ['lbbrk', [10098]], ['lbrace', [123]], ['lbrack', [91]], ['lbrke', [10635]], ['lbrksld', [10639]], ['lbrkslu', [10637]], ['Lcaron', [317]], ['lcaron', [318]], ['Lcedil', [315]], ['lcedil', [316]], ['lceil', [8968]], ['lcub', [123]], ['Lcy', [1051]], ['lcy', [1083]], ['ldca', [10550]], ['ldquo', [8220]], ['ldquor', [8222]], ['ldrdhar', [10599]], ['ldrushar', [10571]], ['ldsh', [8626]], ['le', [8804]], ['lE', [8806]], ['LeftAngleBracket', [10216]], ['LeftArrowBar', [8676]], ['leftarrow', [8592]], ['LeftArrow', [8592]], ['Leftarrow', [8656]], ['LeftArrowRightArrow', [8646]], ['leftarrowtail', [8610]], ['LeftCeiling', [8968]], ['LeftDoubleBracket', [10214]], ['LeftDownTeeVector', [10593]], ['LeftDownVectorBar', [10585]], ['LeftDownVector', [8643]], ['LeftFloor', [8970]], ['leftharpoondown', [8637]], ['leftharpoonup', [8636]], ['leftleftarrows', [8647]], ['leftrightarrow', [8596]], ['LeftRightArrow', [8596]], ['Leftrightarrow', [8660]], ['leftrightarrows', [8646]], ['leftrightharpoons', [8651]], ['leftrightsquigarrow', [8621]], ['LeftRightVector', [10574]], ['LeftTeeArrow', [8612]], ['LeftTee', [8867]], ['LeftTeeVector', [10586]], ['leftthreetimes', [8907]], ['LeftTriangleBar', [10703]], ['LeftTriangle', [8882]], ['LeftTriangleEqual', [8884]], ['LeftUpDownVector', [10577]], ['LeftUpTeeVector', [10592]], ['LeftUpVectorBar', [10584]], ['LeftUpVector', [8639]], ['LeftVectorBar', [10578]], ['LeftVector', [8636]], ['lEg', [10891]], ['leg', [8922]], ['leq', [8804]], ['leqq', [8806]], ['leqslant', [10877]], ['lescc', [10920]], ['les', [10877]], ['lesdot', [10879]], ['lesdoto', [10881]], ['lesdotor', [10883]], ['lesg', [8922, 65024]], ['lesges', [10899]], ['lessapprox', [10885]], ['lessdot', [8918]], ['lesseqgtr', [8922]], ['lesseqqgtr', [10891]], ['LessEqualGreater', [8922]], ['LessFullEqual', [8806]], ['LessGreater', [8822]], ['lessgtr', [8822]], ['LessLess', [10913]], ['lesssim', [8818]], ['LessSlantEqual', [10877]], ['LessTilde', [8818]], ['lfisht', [10620]], ['lfloor', [8970]], ['Lfr', [120079]], ['lfr', [120105]], ['lg', [8822]], ['lgE', [10897]], ['lHar', [10594]], ['lhard', [8637]], ['lharu', [8636]], ['lharul', [10602]], ['lhblk', [9604]], ['LJcy', [1033]], ['ljcy', [1113]], ['llarr', [8647]], ['ll', [8810]], ['Ll', [8920]], ['llcorner', [8990]], ['Lleftarrow', [8666]], ['llhard', [10603]], ['lltri', [9722]], ['Lmidot', [319]], ['lmidot', [320]], ['lmoustache', [9136]], ['lmoust', [9136]], ['lnap', [10889]], ['lnapprox', [10889]], ['lne', [10887]], ['lnE', [8808]], ['lneq', [10887]], ['lneqq', [8808]], ['lnsim', [8934]], ['loang', [10220]], ['loarr', [8701]], ['lobrk', [10214]], ['longleftarrow', [10229]], ['LongLeftArrow', [10229]], ['Longleftarrow', [10232]], ['longleftrightarrow', [10231]], ['LongLeftRightArrow', [10231]], ['Longleftrightarrow', [10234]], ['longmapsto', [10236]], ['longrightarrow', [10230]], ['LongRightArrow', [10230]], ['Longrightarrow', [10233]], ['looparrowleft', [8619]], ['looparrowright', [8620]], ['lopar', [10629]], ['Lopf', [120131]], ['lopf', [120157]], ['loplus', [10797]], ['lotimes', [10804]], ['lowast', [8727]], ['lowbar', [95]], ['LowerLeftArrow', [8601]], ['LowerRightArrow', [8600]], ['loz', [9674]], ['lozenge', [9674]], ['lozf', [10731]], ['lpar', [40]], ['lparlt', [10643]], ['lrarr', [8646]], ['lrcorner', [8991]], ['lrhar', [8651]], ['lrhard', [10605]], ['lrm', [8206]], ['lrtri', [8895]], ['lsaquo', [8249]], ['lscr', [120001]], ['Lscr', [8466]], ['lsh', [8624]], ['Lsh', [8624]], ['lsim', [8818]], ['lsime', [10893]], ['lsimg', [10895]], ['lsqb', [91]], ['lsquo', [8216]], ['lsquor', [8218]], ['Lstrok', [321]], ['lstrok', [322]], ['ltcc', [10918]], ['ltcir', [10873]], ['lt', [60]], ['LT', [60]], ['Lt', [8810]], ['ltdot', [8918]], ['lthree', [8907]], ['ltimes', [8905]], ['ltlarr', [10614]], ['ltquest', [10875]], ['ltri', [9667]], ['ltrie', [8884]], ['ltrif', [9666]], ['ltrPar', [10646]], ['lurdshar', [10570]], ['luruhar', [10598]], ['lvertneqq', [8808, 65024]], ['lvnE', [8808, 65024]], ['macr', [175]], ['male', [9794]], ['malt', [10016]], ['maltese', [10016]], ['Map', [10501]], ['map', [8614]], ['mapsto', [8614]], ['mapstodown', [8615]], ['mapstoleft', [8612]], ['mapstoup', [8613]], ['marker', [9646]], ['mcomma', [10793]], ['Mcy', [1052]], ['mcy', [1084]], ['mdash', [8212]], ['mDDot', [8762]], ['measuredangle', [8737]], ['MediumSpace', [8287]], ['Mellintrf', [8499]], ['Mfr', [120080]], ['mfr', [120106]], ['mho', [8487]], ['micro', [181]], ['midast', [42]], ['midcir', [10992]], ['mid', [8739]], ['middot', [183]], ['minusb', [8863]], ['minus', [8722]], ['minusd', [8760]], ['minusdu', [10794]], ['MinusPlus', [8723]], ['mlcp', [10971]], ['mldr', [8230]], ['mnplus', [8723]], ['models', [8871]], ['Mopf', [120132]], ['mopf', [120158]], ['mp', [8723]], ['mscr', [120002]], ['Mscr', [8499]], ['mstpos', [8766]], ['Mu', [924]], ['mu', [956]], ['multimap', [8888]], ['mumap', [8888]], ['nabla', [8711]], ['Nacute', [323]], ['nacute', [324]], ['nang', [8736, 8402]], ['nap', [8777]], ['napE', [10864, 824]], ['napid', [8779, 824]], ['napos', [329]], ['napprox', [8777]], ['natural', [9838]], ['naturals', [8469]], ['natur', [9838]], ['nbsp', [160]], ['nbump', [8782, 824]], ['nbumpe', [8783, 824]], ['ncap', [10819]], ['Ncaron', [327]], ['ncaron', [328]], ['Ncedil', [325]], ['ncedil', [326]], ['ncong', [8775]], ['ncongdot', [10861, 824]], ['ncup', [10818]], ['Ncy', [1053]], ['ncy', [1085]], ['ndash', [8211]], ['nearhk', [10532]], ['nearr', [8599]], ['neArr', [8663]], ['nearrow', [8599]], ['ne', [8800]], ['nedot', [8784, 824]], ['NegativeMediumSpace', [8203]], ['NegativeThickSpace', [8203]], ['NegativeThinSpace', [8203]], ['NegativeVeryThinSpace', [8203]], ['nequiv', [8802]], ['nesear', [10536]], ['nesim', [8770, 824]], ['NestedGreaterGreater', [8811]], ['NestedLessLess', [8810]], ['nexist', [8708]], ['nexists', [8708]], ['Nfr', [120081]], ['nfr', [120107]], ['ngE', [8807, 824]], ['nge', [8817]], ['ngeq', [8817]], ['ngeqq', [8807, 824]], ['ngeqslant', [10878, 824]], ['nges', [10878, 824]], ['nGg', [8921, 824]], ['ngsim', [8821]], ['nGt', [8811, 8402]], ['ngt', [8815]], ['ngtr', [8815]], ['nGtv', [8811, 824]], ['nharr', [8622]], ['nhArr', [8654]], ['nhpar', [10994]], ['ni', [8715]], ['nis', [8956]], ['nisd', [8954]], ['niv', [8715]], ['NJcy', [1034]], ['njcy', [1114]], ['nlarr', [8602]], ['nlArr', [8653]], ['nldr', [8229]], ['nlE', [8806, 824]], ['nle', [8816]], ['nleftarrow', [8602]], ['nLeftarrow', [8653]], ['nleftrightarrow', [8622]], ['nLeftrightarrow', [8654]], ['nleq', [8816]], ['nleqq', [8806, 824]], ['nleqslant', [10877, 824]], ['nles', [10877, 824]], ['nless', [8814]], ['nLl', [8920, 824]], ['nlsim', [8820]], ['nLt', [8810, 8402]], ['nlt', [8814]], ['nltri', [8938]], ['nltrie', [8940]], ['nLtv', [8810, 824]], ['nmid', [8740]], ['NoBreak', [8288]], ['NonBreakingSpace', [160]], ['nopf', [120159]], ['Nopf', [8469]], ['Not', [10988]], ['not', [172]], ['NotCongruent', [8802]], ['NotCupCap', [8813]], ['NotDoubleVerticalBar', [8742]], ['NotElement', [8713]], ['NotEqual', [8800]], ['NotEqualTilde', [8770, 824]], ['NotExists', [8708]], ['NotGreater', [8815]], ['NotGreaterEqual', [8817]], ['NotGreaterFullEqual', [8807, 824]], ['NotGreaterGreater', [8811, 824]], ['NotGreaterLess', [8825]], ['NotGreaterSlantEqual', [10878, 824]], ['NotGreaterTilde', [8821]], ['NotHumpDownHump', [8782, 824]], ['NotHumpEqual', [8783, 824]], ['notin', [8713]], ['notindot', [8949, 824]], ['notinE', [8953, 824]], ['notinva', [8713]], ['notinvb', [8951]], ['notinvc', [8950]], ['NotLeftTriangleBar', [10703, 824]], ['NotLeftTriangle', [8938]], ['NotLeftTriangleEqual', [8940]], ['NotLess', [8814]], ['NotLessEqual', [8816]], ['NotLessGreater', [8824]], ['NotLessLess', [8810, 824]], ['NotLessSlantEqual', [10877, 824]], ['NotLessTilde', [8820]], ['NotNestedGreaterGreater', [10914, 824]], ['NotNestedLessLess', [10913, 824]], ['notni', [8716]], ['notniva', [8716]], ['notnivb', [8958]], ['notnivc', [8957]], ['NotPrecedes', [8832]], ['NotPrecedesEqual', [10927, 824]], ['NotPrecedesSlantEqual', [8928]], ['NotReverseElement', [8716]], ['NotRightTriangleBar', [10704, 824]], ['NotRightTriangle', [8939]], ['NotRightTriangleEqual', [8941]], ['NotSquareSubset', [8847, 824]], ['NotSquareSubsetEqual', [8930]], ['NotSquareSuperset', [8848, 824]], ['NotSquareSupersetEqual', [8931]], ['NotSubset', [8834, 8402]], ['NotSubsetEqual', [8840]], ['NotSucceeds', [8833]], ['NotSucceedsEqual', [10928, 824]], ['NotSucceedsSlantEqual', [8929]], ['NotSucceedsTilde', [8831, 824]], ['NotSuperset', [8835, 8402]], ['NotSupersetEqual', [8841]], ['NotTilde', [8769]], ['NotTildeEqual', [8772]], ['NotTildeFullEqual', [8775]], ['NotTildeTilde', [8777]], ['NotVerticalBar', [8740]], ['nparallel', [8742]], ['npar', [8742]], ['nparsl', [11005, 8421]], ['npart', [8706, 824]], ['npolint', [10772]], ['npr', [8832]], ['nprcue', [8928]], ['nprec', [8832]], ['npreceq', [10927, 824]], ['npre', [10927, 824]], ['nrarrc', [10547, 824]], ['nrarr', [8603]], ['nrArr', [8655]], ['nrarrw', [8605, 824]], ['nrightarrow', [8603]], ['nRightarrow', [8655]], ['nrtri', [8939]], ['nrtrie', [8941]], ['nsc', [8833]], ['nsccue', [8929]], ['nsce', [10928, 824]], ['Nscr', [119977]], ['nscr', [120003]], ['nshortmid', [8740]], ['nshortparallel', [8742]], ['nsim', [8769]], ['nsime', [8772]], ['nsimeq', [8772]], ['nsmid', [8740]], ['nspar', [8742]], ['nsqsube', [8930]], ['nsqsupe', [8931]], ['nsub', [8836]], ['nsubE', [10949, 824]], ['nsube', [8840]], ['nsubset', [8834, 8402]], ['nsubseteq', [8840]], ['nsubseteqq', [10949, 824]], ['nsucc', [8833]], ['nsucceq', [10928, 824]], ['nsup', [8837]], ['nsupE', [10950, 824]], ['nsupe', [8841]], ['nsupset', [8835, 8402]], ['nsupseteq', [8841]], ['nsupseteqq', [10950, 824]], ['ntgl', [8825]], ['Ntilde', [209]], ['ntilde', [241]], ['ntlg', [8824]], ['ntriangleleft', [8938]], ['ntrianglelefteq', [8940]], ['ntriangleright', [8939]], ['ntrianglerighteq', [8941]], ['Nu', [925]], ['nu', [957]], ['num', [35]], ['numero', [8470]], ['numsp', [8199]], ['nvap', [8781, 8402]], ['nvdash', [8876]], ['nvDash', [8877]], ['nVdash', [8878]], ['nVDash', [8879]], ['nvge', [8805, 8402]], ['nvgt', [62, 8402]], ['nvHarr', [10500]], ['nvinfin', [10718]], ['nvlArr', [10498]], ['nvle', [8804, 8402]], ['nvlt', [60, 8402]], ['nvltrie', [8884, 8402]], ['nvrArr', [10499]], ['nvrtrie', [8885, 8402]], ['nvsim', [8764, 8402]], ['nwarhk', [10531]], ['nwarr', [8598]], ['nwArr', [8662]], ['nwarrow', [8598]], ['nwnear', [10535]], ['Oacute', [211]], ['oacute', [243]], ['oast', [8859]], ['Ocirc', [212]], ['ocirc', [244]], ['ocir', [8858]], ['Ocy', [1054]], ['ocy', [1086]], ['odash', [8861]], ['Odblac', [336]], ['odblac', [337]], ['odiv', [10808]], ['odot', [8857]], ['odsold', [10684]], ['OElig', [338]], ['oelig', [339]], ['ofcir', [10687]], ['Ofr', [120082]], ['ofr', [120108]], ['ogon', [731]], ['Ograve', [210]], ['ograve', [242]], ['ogt', [10689]], ['ohbar', [10677]], ['ohm', [937]], ['oint', [8750]], ['olarr', [8634]], ['olcir', [10686]], ['olcross', [10683]], ['oline', [8254]], ['olt', [10688]], ['Omacr', [332]], ['omacr', [333]], ['Omega', [937]], ['omega', [969]], ['Omicron', [927]], ['omicron', [959]], ['omid', [10678]], ['ominus', [8854]], ['Oopf', [120134]], ['oopf', [120160]], ['opar', [10679]], ['OpenCurlyDoubleQuote', [8220]], ['OpenCurlyQuote', [8216]], ['operp', [10681]], ['oplus', [8853]], ['orarr', [8635]], ['Or', [10836]], ['or', [8744]], ['ord', [10845]], ['order', [8500]], ['orderof', [8500]], ['ordf', [170]], ['ordm', [186]], ['origof', [8886]], ['oror', [10838]], ['orslope', [10839]], ['orv', [10843]], ['oS', [9416]], ['Oscr', [119978]], ['oscr', [8500]], ['Oslash', [216]], ['oslash', [248]], ['osol', [8856]], ['Otilde', [213]], ['otilde', [245]], ['otimesas', [10806]], ['Otimes', [10807]], ['otimes', [8855]], ['Ouml', [214]], ['ouml', [246]], ['ovbar', [9021]], ['OverBar', [8254]], ['OverBrace', [9182]], ['OverBracket', [9140]], ['OverParenthesis', [9180]], ['para', [182]], ['parallel', [8741]], ['par', [8741]], ['parsim', [10995]], ['parsl', [11005]], ['part', [8706]], ['PartialD', [8706]], ['Pcy', [1055]], ['pcy', [1087]], ['percnt', [37]], ['period', [46]], ['permil', [8240]], ['perp', [8869]], ['pertenk', [8241]], ['Pfr', [120083]], ['pfr', [120109]], ['Phi', [934]], ['phi', [966]], ['phiv', [981]], ['phmmat', [8499]], ['phone', [9742]], ['Pi', [928]], ['pi', [960]], ['pitchfork', [8916]], ['piv', [982]], ['planck', [8463]], ['planckh', [8462]], ['plankv', [8463]], ['plusacir', [10787]], ['plusb', [8862]], ['pluscir', [10786]], ['plus', [43]], ['plusdo', [8724]], ['plusdu', [10789]], ['pluse', [10866]], ['PlusMinus', [177]], ['plusmn', [177]], ['plussim', [10790]], ['plustwo', [10791]], ['pm', [177]], ['Poincareplane', [8460]], ['pointint', [10773]], ['popf', [120161]], ['Popf', [8473]], ['pound', [163]], ['prap', [10935]], ['Pr', [10939]], ['pr', [8826]], ['prcue', [8828]], ['precapprox', [10935]], ['prec', [8826]], ['preccurlyeq', [8828]], ['Precedes', [8826]], ['PrecedesEqual', [10927]], ['PrecedesSlantEqual', [8828]], ['PrecedesTilde', [8830]], ['preceq', [10927]], ['precnapprox', [10937]], ['precneqq', [10933]], ['precnsim', [8936]], ['pre', [10927]], ['prE', [10931]], ['precsim', [8830]], ['prime', [8242]], ['Prime', [8243]], ['primes', [8473]], ['prnap', [10937]], ['prnE', [10933]], ['prnsim', [8936]], ['prod', [8719]], ['Product', [8719]], ['profalar', [9006]], ['profline', [8978]], ['profsurf', [8979]], ['prop', [8733]], ['Proportional', [8733]], ['Proportion', [8759]], ['propto', [8733]], ['prsim', [8830]], ['prurel', [8880]], ['Pscr', [119979]], ['pscr', [120005]], ['Psi', [936]], ['psi', [968]], ['puncsp', [8200]], ['Qfr', [120084]], ['qfr', [120110]], ['qint', [10764]], ['qopf', [120162]], ['Qopf', [8474]], ['qprime', [8279]], ['Qscr', [119980]], ['qscr', [120006]], ['quaternions', [8461]], ['quatint', [10774]], ['quest', [63]], ['questeq', [8799]], ['quot', [34]], ['QUOT', [34]], ['rAarr', [8667]], ['race', [8765, 817]], ['Racute', [340]], ['racute', [341]], ['radic', [8730]], ['raemptyv', [10675]], ['rang', [10217]], ['Rang', [10219]], ['rangd', [10642]], ['range', [10661]], ['rangle', [10217]], ['raquo', [187]], ['rarrap', [10613]], ['rarrb', [8677]], ['rarrbfs', [10528]], ['rarrc', [10547]], ['rarr', [8594]], ['Rarr', [8608]], ['rArr', [8658]], ['rarrfs', [10526]], ['rarrhk', [8618]], ['rarrlp', [8620]], ['rarrpl', [10565]], ['rarrsim', [10612]], ['Rarrtl', [10518]], ['rarrtl', [8611]], ['rarrw', [8605]], ['ratail', [10522]], ['rAtail', [10524]], ['ratio', [8758]], ['rationals', [8474]], ['rbarr', [10509]], ['rBarr', [10511]], ['RBarr', [10512]], ['rbbrk', [10099]], ['rbrace', [125]], ['rbrack', [93]], ['rbrke', [10636]], ['rbrksld', [10638]], ['rbrkslu', [10640]], ['Rcaron', [344]], ['rcaron', [345]], ['Rcedil', [342]], ['rcedil', [343]], ['rceil', [8969]], ['rcub', [125]], ['Rcy', [1056]], ['rcy', [1088]], ['rdca', [10551]], ['rdldhar', [10601]], ['rdquo', [8221]], ['rdquor', [8221]], ['CloseCurlyDoubleQuote', [8221]], ['rdsh', [8627]], ['real', [8476]], ['realine', [8475]], ['realpart', [8476]], ['reals', [8477]], ['Re', [8476]], ['rect', [9645]], ['reg', [174]], ['REG', [174]], ['ReverseElement', [8715]], ['ReverseEquilibrium', [8651]], ['ReverseUpEquilibrium', [10607]], ['rfisht', [10621]], ['rfloor', [8971]], ['rfr', [120111]], ['Rfr', [8476]], ['rHar', [10596]], ['rhard', [8641]], ['rharu', [8640]], ['rharul', [10604]], ['Rho', [929]], ['rho', [961]], ['rhov', [1009]], ['RightAngleBracket', [10217]], ['RightArrowBar', [8677]], ['rightarrow', [8594]], ['RightArrow', [8594]], ['Rightarrow', [8658]], ['RightArrowLeftArrow', [8644]], ['rightarrowtail', [8611]], ['RightCeiling', [8969]], ['RightDoubleBracket', [10215]], ['RightDownTeeVector', [10589]], ['RightDownVectorBar', [10581]], ['RightDownVector', [8642]], ['RightFloor', [8971]], ['rightharpoondown', [8641]], ['rightharpoonup', [8640]], ['rightleftarrows', [8644]], ['rightleftharpoons', [8652]], ['rightrightarrows', [8649]], ['rightsquigarrow', [8605]], ['RightTeeArrow', [8614]], ['RightTee', [8866]], ['RightTeeVector', [10587]], ['rightthreetimes', [8908]], ['RightTriangleBar', [10704]], ['RightTriangle', [8883]], ['RightTriangleEqual', [8885]], ['RightUpDownVector', [10575]], ['RightUpTeeVector', [10588]], ['RightUpVectorBar', [10580]], ['RightUpVector', [8638]], ['RightVectorBar', [10579]], ['RightVector', [8640]], ['ring', [730]], ['risingdotseq', [8787]], ['rlarr', [8644]], ['rlhar', [8652]], ['rlm', [8207]], ['rmoustache', [9137]], ['rmoust', [9137]], ['rnmid', [10990]], ['roang', [10221]], ['roarr', [8702]], ['robrk', [10215]], ['ropar', [10630]], ['ropf', [120163]], ['Ropf', [8477]], ['roplus', [10798]], ['rotimes', [10805]], ['RoundImplies', [10608]], ['rpar', [41]], ['rpargt', [10644]], ['rppolint', [10770]], ['rrarr', [8649]], ['Rrightarrow', [8667]], ['rsaquo', [8250]], ['rscr', [120007]], ['Rscr', [8475]], ['rsh', [8625]], ['Rsh', [8625]], ['rsqb', [93]], ['rsquo', [8217]], ['rsquor', [8217]], ['CloseCurlyQuote', [8217]], ['rthree', [8908]], ['rtimes', [8906]], ['rtri', [9657]], ['rtrie', [8885]], ['rtrif', [9656]], ['rtriltri', [10702]], ['RuleDelayed', [10740]], ['ruluhar', [10600]], ['rx', [8478]], ['Sacute', [346]], ['sacute', [347]], ['sbquo', [8218]], ['scap', [10936]], ['Scaron', [352]], ['scaron', [353]], ['Sc', [10940]], ['sc', [8827]], ['sccue', [8829]], ['sce', [10928]], ['scE', [10932]], ['Scedil', [350]], ['scedil', [351]], ['Scirc', [348]], ['scirc', [349]], ['scnap', [10938]], ['scnE', [10934]], ['scnsim', [8937]], ['scpolint', [10771]], ['scsim', [8831]], ['Scy', [1057]], ['scy', [1089]], ['sdotb', [8865]], ['sdot', [8901]], ['sdote', [10854]], ['searhk', [10533]], ['searr', [8600]], ['seArr', [8664]], ['searrow', [8600]], ['sect', [167]], ['semi', [59]], ['seswar', [10537]], ['setminus', [8726]], ['setmn', [8726]], ['sext', [10038]], ['Sfr', [120086]], ['sfr', [120112]], ['sfrown', [8994]], ['sharp', [9839]], ['SHCHcy', [1065]], ['shchcy', [1097]], ['SHcy', [1064]], ['shcy', [1096]], ['ShortDownArrow', [8595]], ['ShortLeftArrow', [8592]], ['shortmid', [8739]], ['shortparallel', [8741]], ['ShortRightArrow', [8594]], ['ShortUpArrow', [8593]], ['shy', [173]], ['Sigma', [931]], ['sigma', [963]], ['sigmaf', [962]], ['sigmav', [962]], ['sim', [8764]], ['simdot', [10858]], ['sime', [8771]], ['simeq', [8771]], ['simg', [10910]], ['simgE', [10912]], ['siml', [10909]], ['simlE', [10911]], ['simne', [8774]], ['simplus', [10788]], ['simrarr', [10610]], ['slarr', [8592]], ['SmallCircle', [8728]], ['smallsetminus', [8726]], ['smashp', [10803]], ['smeparsl', [10724]], ['smid', [8739]], ['smile', [8995]], ['smt', [10922]], ['smte', [10924]], ['smtes', [10924, 65024]], ['SOFTcy', [1068]], ['softcy', [1100]], ['solbar', [9023]], ['solb', [10692]], ['sol', [47]], ['Sopf', [120138]], ['sopf', [120164]], ['spades', [9824]], ['spadesuit', [9824]], ['spar', [8741]], ['sqcap', [8851]], ['sqcaps', [8851, 65024]], ['sqcup', [8852]], ['sqcups', [8852, 65024]], ['Sqrt', [8730]], ['sqsub', [8847]], ['sqsube', [8849]], ['sqsubset', [8847]], ['sqsubseteq', [8849]], ['sqsup', [8848]], ['sqsupe', [8850]], ['sqsupset', [8848]], ['sqsupseteq', [8850]], ['square', [9633]], ['Square', [9633]], ['SquareIntersection', [8851]], ['SquareSubset', [8847]], ['SquareSubsetEqual', [8849]], ['SquareSuperset', [8848]], ['SquareSupersetEqual', [8850]], ['SquareUnion', [8852]], ['squarf', [9642]], ['squ', [9633]], ['squf', [9642]], ['srarr', [8594]], ['Sscr', [119982]], ['sscr', [120008]], ['ssetmn', [8726]], ['ssmile', [8995]], ['sstarf', [8902]], ['Star', [8902]], ['star', [9734]], ['starf', [9733]], ['straightepsilon', [1013]], ['straightphi', [981]], ['strns', [175]], ['sub', [8834]], ['Sub', [8912]], ['subdot', [10941]], ['subE', [10949]], ['sube', [8838]], ['subedot', [10947]], ['submult', [10945]], ['subnE', [10955]], ['subne', [8842]], ['subplus', [10943]], ['subrarr', [10617]], ['subset', [8834]], ['Subset', [8912]], ['subseteq', [8838]], ['subseteqq', [10949]], ['SubsetEqual', [8838]], ['subsetneq', [8842]], ['subsetneqq', [10955]], ['subsim', [10951]], ['subsub', [10965]], ['subsup', [10963]], ['succapprox', [10936]], ['succ', [8827]], ['succcurlyeq', [8829]], ['Succeeds', [8827]], ['SucceedsEqual', [10928]], ['SucceedsSlantEqual', [8829]], ['SucceedsTilde', [8831]], ['succeq', [10928]], ['succnapprox', [10938]], ['succneqq', [10934]], ['succnsim', [8937]], ['succsim', [8831]], ['SuchThat', [8715]], ['sum', [8721]], ['Sum', [8721]], ['sung', [9834]], ['sup1', [185]], ['sup2', [178]], ['sup3', [179]], ['sup', [8835]], ['Sup', [8913]], ['supdot', [10942]], ['supdsub', [10968]], ['supE', [10950]], ['supe', [8839]], ['supedot', [10948]], ['Superset', [8835]], ['SupersetEqual', [8839]], ['suphsol', [10185]], ['suphsub', [10967]], ['suplarr', [10619]], ['supmult', [10946]], ['supnE', [10956]], ['supne', [8843]], ['supplus', [10944]], ['supset', [8835]], ['Supset', [8913]], ['supseteq', [8839]], ['supseteqq', [10950]], ['supsetneq', [8843]], ['supsetneqq', [10956]], ['supsim', [10952]], ['supsub', [10964]], ['supsup', [10966]], ['swarhk', [10534]], ['swarr', [8601]], ['swArr', [8665]], ['swarrow', [8601]], ['swnwar', [10538]], ['szlig', [223]], ['Tab', [9]], ['target', [8982]], ['Tau', [932]], ['tau', [964]], ['tbrk', [9140]], ['Tcaron', [356]], ['tcaron', [357]], ['Tcedil', [354]], ['tcedil', [355]], ['Tcy', [1058]], ['tcy', [1090]], ['tdot', [8411]], ['telrec', [8981]], ['Tfr', [120087]], ['tfr', [120113]], ['there4', [8756]], ['therefore', [8756]], ['Therefore', [8756]], ['Theta', [920]], ['theta', [952]], ['thetasym', [977]], ['thetav', [977]], ['thickapprox', [8776]], ['thicksim', [8764]], ['ThickSpace', [8287, 8202]], ['ThinSpace', [8201]], ['thinsp', [8201]], ['thkap', [8776]], ['thksim', [8764]], ['THORN', [222]], ['thorn', [254]], ['tilde', [732]], ['Tilde', [8764]], ['TildeEqual', [8771]], ['TildeFullEqual', [8773]], ['TildeTilde', [8776]], ['timesbar', [10801]], ['timesb', [8864]], ['times', [215]], ['timesd', [10800]], ['tint', [8749]], ['toea', [10536]], ['topbot', [9014]], ['topcir', [10993]], ['top', [8868]], ['Topf', [120139]], ['topf', [120165]], ['topfork', [10970]], ['tosa', [10537]], ['tprime', [8244]], ['trade', [8482]], ['TRADE', [8482]], ['triangle', [9653]], ['triangledown', [9663]], ['triangleleft', [9667]], ['trianglelefteq', [8884]], ['triangleq', [8796]], ['triangleright', [9657]], ['trianglerighteq', [8885]], ['tridot', [9708]], ['trie', [8796]], ['triminus', [10810]], ['TripleDot', [8411]], ['triplus', [10809]], ['trisb', [10701]], ['tritime', [10811]], ['trpezium', [9186]], ['Tscr', [119983]], ['tscr', [120009]], ['TScy', [1062]], ['tscy', [1094]], ['TSHcy', [1035]], ['tshcy', [1115]], ['Tstrok', [358]], ['tstrok', [359]], ['twixt', [8812]], ['twoheadleftarrow', [8606]], ['twoheadrightarrow', [8608]], ['Uacute', [218]], ['uacute', [250]], ['uarr', [8593]], ['Uarr', [8607]], ['uArr', [8657]], ['Uarrocir', [10569]], ['Ubrcy', [1038]], ['ubrcy', [1118]], ['Ubreve', [364]], ['ubreve', [365]], ['Ucirc', [219]], ['ucirc', [251]], ['Ucy', [1059]], ['ucy', [1091]], ['udarr', [8645]], ['Udblac', [368]], ['udblac', [369]], ['udhar', [10606]], ['ufisht', [10622]], ['Ufr', [120088]], ['ufr', [120114]], ['Ugrave', [217]], ['ugrave', [249]], ['uHar', [10595]], ['uharl', [8639]], ['uharr', [8638]], ['uhblk', [9600]], ['ulcorn', [8988]], ['ulcorner', [8988]], ['ulcrop', [8975]], ['ultri', [9720]], ['Umacr', [362]], ['umacr', [363]], ['uml', [168]], ['UnderBar', [95]], ['UnderBrace', [9183]], ['UnderBracket', [9141]], ['UnderParenthesis', [9181]], ['Union', [8899]], ['UnionPlus', [8846]], ['Uogon', [370]], ['uogon', [371]], ['Uopf', [120140]], ['uopf', [120166]], ['UpArrowBar', [10514]], ['uparrow', [8593]], ['UpArrow', [8593]], ['Uparrow', [8657]], ['UpArrowDownArrow', [8645]], ['updownarrow', [8597]], ['UpDownArrow', [8597]], ['Updownarrow', [8661]], ['UpEquilibrium', [10606]], ['upharpoonleft', [8639]], ['upharpoonright', [8638]], ['uplus', [8846]], ['UpperLeftArrow', [8598]], ['UpperRightArrow', [8599]], ['upsi', [965]], ['Upsi', [978]], ['upsih', [978]], ['Upsilon', [933]], ['upsilon', [965]], ['UpTeeArrow', [8613]], ['UpTee', [8869]], ['upuparrows', [8648]], ['urcorn', [8989]], ['urcorner', [8989]], ['urcrop', [8974]], ['Uring', [366]], ['uring', [367]], ['urtri', [9721]], ['Uscr', [119984]], ['uscr', [120010]], ['utdot', [8944]], ['Utilde', [360]], ['utilde', [361]], ['utri', [9653]], ['utrif', [9652]], ['uuarr', [8648]], ['Uuml', [220]], ['uuml', [252]], ['uwangle', [10663]], ['vangrt', [10652]], ['varepsilon', [1013]], ['varkappa', [1008]], ['varnothing', [8709]], ['varphi', [981]], ['varpi', [982]], ['varpropto', [8733]], ['varr', [8597]], ['vArr', [8661]], ['varrho', [1009]], ['varsigma', [962]], ['varsubsetneq', [8842, 65024]], ['varsubsetneqq', [10955, 65024]], ['varsupsetneq', [8843, 65024]], ['varsupsetneqq', [10956, 65024]], ['vartheta', [977]], ['vartriangleleft', [8882]], ['vartriangleright', [8883]], ['vBar', [10984]], ['Vbar', [10987]], ['vBarv', [10985]], ['Vcy', [1042]], ['vcy', [1074]], ['vdash', [8866]], ['vDash', [8872]], ['Vdash', [8873]], ['VDash', [8875]], ['Vdashl', [10982]], ['veebar', [8891]], ['vee', [8744]], ['Vee', [8897]], ['veeeq', [8794]], ['vellip', [8942]], ['verbar', [124]], ['Verbar', [8214]], ['vert', [124]], ['Vert', [8214]], ['VerticalBar', [8739]], ['VerticalLine', [124]], ['VerticalSeparator', [10072]], ['VerticalTilde', [8768]], ['VeryThinSpace', [8202]], ['Vfr', [120089]], ['vfr', [120115]], ['vltri', [8882]], ['vnsub', [8834, 8402]], ['vnsup', [8835, 8402]], ['Vopf', [120141]], ['vopf', [120167]], ['vprop', [8733]], ['vrtri', [8883]], ['Vscr', [119985]], ['vscr', [120011]], ['vsubnE', [10955, 65024]], ['vsubne', [8842, 65024]], ['vsupnE', [10956, 65024]], ['vsupne', [8843, 65024]], ['Vvdash', [8874]], ['vzigzag', [10650]], ['Wcirc', [372]], ['wcirc', [373]], ['wedbar', [10847]], ['wedge', [8743]], ['Wedge', [8896]], ['wedgeq', [8793]], ['weierp', [8472]], ['Wfr', [120090]], ['wfr', [120116]], ['Wopf', [120142]], ['wopf', [120168]], ['wp', [8472]], ['wr', [8768]], ['wreath', [8768]], ['Wscr', [119986]], ['wscr', [120012]], ['xcap', [8898]], ['xcirc', [9711]], ['xcup', [8899]], ['xdtri', [9661]], ['Xfr', [120091]], ['xfr', [120117]], ['xharr', [10231]], ['xhArr', [10234]], ['Xi', [926]], ['xi', [958]], ['xlarr', [10229]], ['xlArr', [10232]], ['xmap', [10236]], ['xnis', [8955]], ['xodot', [10752]], ['Xopf', [120143]], ['xopf', [120169]], ['xoplus', [10753]], ['xotime', [10754]], ['xrarr', [10230]], ['xrArr', [10233]], ['Xscr', [119987]], ['xscr', [120013]], ['xsqcup', [10758]], ['xuplus', [10756]], ['xutri', [9651]], ['xvee', [8897]], ['xwedge', [8896]], ['Yacute', [221]], ['yacute', [253]], ['YAcy', [1071]], ['yacy', [1103]], ['Ycirc', [374]], ['ycirc', [375]], ['Ycy', [1067]], ['ycy', [1099]], ['yen', [165]], ['Yfr', [120092]], ['yfr', [120118]], ['YIcy', [1031]], ['yicy', [1111]], ['Yopf', [120144]], ['yopf', [120170]], ['Yscr', [119988]], ['yscr', [120014]], ['YUcy', [1070]], ['yucy', [1102]], ['yuml', [255]], ['Yuml', [376]], ['Zacute', [377]], ['zacute', [378]], ['Zcaron', [381]], ['zcaron', [382]], ['Zcy', [1047]], ['zcy', [1079]], ['Zdot', [379]], ['zdot', [380]], ['zeetrf', [8488]], ['ZeroWidthSpace', [8203]], ['Zeta', [918]], ['zeta', [950]], ['zfr', [120119]], ['Zfr', [8488]], ['ZHcy', [1046]], ['zhcy', [1078]], ['zigrarr', [8669]], ['zopf', [120171]], ['Zopf', [8484]], ['Zscr', [119989]], ['zscr', [120015]], ['zwj', [8205]], ['zwnj', [8204]]];\n\nvar alphaIndex = {};\nvar charIndex = {};\n\ncreateIndexes(alphaIndex, charIndex);\n\n/**\n * @constructor\n */\nfunction Html5Entities() {}\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.decode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function(s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1) === 'x' ?\n parseInt(entity.substr(2).toLowerCase(), 16) :\n parseInt(entity.substr(1));\n\n if (!(isNaN(code) || code < -32768 || code > 65535)) {\n chr = String.fromCharCode(code);\n }\n } else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.decode = function(str) {\n return new Html5Entities().decode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.encode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var charInfo = charIndex[str.charCodeAt(i)];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n } else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n result += str.charAt(i);\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.encode = function(str) {\n return new Html5Entities().encode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.encodeNonUTF = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var charInfo = charIndex[c];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n } else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n if (c < 32 || c > 126) {\n result += '&#' + c + ';';\n } else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.encodeNonUTF = function(str) {\n return new Html5Entities().encodeNonUTF(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.encodeNonASCII = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n result += '&#' + c + ';';\n i++\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.encodeNonASCII = function(str) {\n return new Html5Entities().encodeNonASCII(str);\n };\n\n/**\n * @param {Object} alphaIndex Passed by reference.\n * @param {Object} charIndex Passed by reference.\n */\nfunction createIndexes(alphaIndex, charIndex) {\n var i = ENTITIES.length;\n var _results = [];\n while (i--) {\n var e = ENTITIES[i];\n var alpha = e[0];\n var chars = e[1];\n var chr = chars[0];\n var addChar = (chr < 32 || chr > 126) || chr === 62 || chr === 60 || chr === 38 || chr === 34 || chr === 39;\n var charInfo;\n if (addChar) {\n charInfo = charIndex[chr] = charIndex[chr] || {};\n }\n if (chars[1]) {\n var chr2 = chars[1];\n alphaIndex[alpha] = String.fromCharCode(chr) + String.fromCharCode(chr2);\n _results.push(addChar && (charInfo[chr2] = alpha));\n } else {\n alphaIndex[alpha] = String.fromCharCode(chr);\n _results.push(addChar && (charInfo[''] = alpha));\n }\n }\n}\n\nmodule.exports = Html5Entities;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/html-entities/lib/html5-entities.js","const hotMiddlewareScript = require('webpack-hot-middleware/client?noInfo=true&timeout=20000&reload=true');\n\nhotMiddlewareScript.subscribe(event => {\n if (event.action === 'reload') {\n window.location.reload();\n }\n});\n\n\n\n// WEBPACK FOOTER //\n// resources/assets/build/helpers/hmr-client.js","/*eslint-env browser*/\n/*global __resourceQuery __webpack_public_path__*/\n\nvar options = {\n path: \"/__webpack_hmr\",\n timeout: 20 * 1000,\n overlay: true,\n reload: false,\n log: true,\n warn: true,\n name: '',\n autoConnect: true,\n overlayStyles: {},\n ansiColors: {}\n};\nif (__resourceQuery) {\n var querystring = require('querystring');\n var overrides = querystring.parse(__resourceQuery.slice(1));\n setOverrides(overrides);\n}\n\nif (typeof window === 'undefined') {\n // do nothing\n} else if (typeof window.EventSource === 'undefined') {\n console.warn(\n \"webpack-hot-middleware's client requires EventSource to work. \" +\n \"You should include a polyfill if you want to support this browser: \" +\n \"https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events#Tools\"\n );\n} else {\n if (options.autoConnect) {\n connect();\n }\n}\n\n/* istanbul ignore next */\nfunction setOptionsAndConnect(overrides) {\n setOverrides(overrides);\n connect();\n}\n\nfunction setOverrides(overrides) {\n if (overrides.autoConnect) options.autoConnect = overrides.autoConnect == 'true';\n if (overrides.path) options.path = overrides.path;\n if (overrides.timeout) options.timeout = overrides.timeout;\n if (overrides.overlay) options.overlay = overrides.overlay !== 'false';\n if (overrides.reload) options.reload = overrides.reload !== 'false';\n if (overrides.noInfo && overrides.noInfo !== 'false') {\n options.log = false;\n }\n if (overrides.name) {\n options.name = overrides.name;\n }\n if (overrides.quiet && overrides.quiet !== 'false') {\n options.log = false;\n options.warn = false;\n }\n\n if (overrides.dynamicPublicPath) {\n options.path = __webpack_public_path__ + options.path;\n }\n\n if (overrides.ansiColors) options.ansiColors = JSON.parse(overrides.ansiColors);\n if (overrides.overlayStyles) options.overlayStyles = JSON.parse(overrides.overlayStyles);\n}\n\nfunction EventSourceWrapper() {\n var source;\n var lastActivity = new Date();\n var listeners = [];\n\n init();\n var timer = setInterval(function() {\n if ((new Date() - lastActivity) > options.timeout) {\n handleDisconnect();\n }\n }, options.timeout / 2);\n\n function init() {\n source = new window.EventSource(options.path);\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onmessage = handleMessage;\n }\n\n function handleOnline() {\n if (options.log) console.log(\"[HMR] connected\");\n lastActivity = new Date();\n }\n\n function handleMessage(event) {\n lastActivity = new Date();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](event);\n }\n }\n\n function handleDisconnect() {\n clearInterval(timer);\n source.close();\n setTimeout(init, options.timeout);\n }\n\n return {\n addMessageListener: function(fn) {\n listeners.push(fn);\n }\n };\n}\n\nfunction getEventSourceWrapper() {\n if (!window.__whmEventSourceWrapper) {\n window.__whmEventSourceWrapper = {};\n }\n if (!window.__whmEventSourceWrapper[options.path]) {\n // cache the wrapper for other entries loaded on\n // the same page with the same options.path\n window.__whmEventSourceWrapper[options.path] = EventSourceWrapper();\n }\n return window.__whmEventSourceWrapper[options.path];\n}\n\nfunction connect() {\n getEventSourceWrapper().addMessageListener(handleMessage);\n\n function handleMessage(event) {\n if (event.data == \"\\uD83D\\uDC93\") {\n return;\n }\n try {\n processMessage(JSON.parse(event.data));\n } catch (ex) {\n if (options.warn) {\n console.warn(\"Invalid HMR message: \" + event.data + \"\\n\" + ex);\n }\n }\n }\n}\n\n// the reporter needs to be a singleton on the page\n// in case the client is being used by multiple bundles\n// we only want to report once.\n// all the errors will go to all clients\nvar singletonKey = '__webpack_hot_middleware_reporter__';\nvar reporter;\nif (typeof window !== 'undefined') {\n if (!window[singletonKey]) {\n window[singletonKey] = createReporter();\n }\n reporter = window[singletonKey];\n}\n\nfunction createReporter() {\n var strip = require('strip-ansi');\n\n var overlay;\n if (typeof document !== 'undefined' && options.overlay) {\n overlay = require('./client-overlay')({\n ansiColors: options.ansiColors,\n overlayStyles: options.overlayStyles\n });\n }\n\n var styles = {\n errors: \"color: #ff0000;\",\n warnings: \"color: #999933;\"\n };\n var previousProblems = null;\n function log(type, obj) {\n var newProblems = obj[type].map(function(msg) { return strip(msg); }).join('\\n');\n if (previousProblems == newProblems) {\n return;\n } else {\n previousProblems = newProblems;\n }\n\n var style = styles[type];\n var name = obj.name ? \"'\" + obj.name + \"' \" : \"\";\n var title = \"[HMR] bundle \" + name + \"has \" + obj[type].length + \" \" + type;\n // NOTE: console.warn or console.error will print the stack trace\n // which isn't helpful here, so using console.log to escape it.\n if (console.group && console.groupEnd) {\n console.group(\"%c\" + title, style);\n console.log(\"%c\" + newProblems, style);\n console.groupEnd();\n } else {\n console.log(\n \"%c\" + title + \"\\n\\t%c\" + newProblems.replace(/\\n/g, \"\\n\\t\"),\n style + \"font-weight: bold;\",\n style + \"font-weight: normal;\"\n );\n }\n }\n\n return {\n cleanProblemsCache: function () {\n previousProblems = null;\n },\n problems: function(type, obj) {\n if (options.warn) {\n log(type, obj);\n }\n if (overlay && type !== 'warnings') overlay.showProblems(type, obj[type]);\n },\n success: function() {\n if (overlay) overlay.clear();\n },\n useCustomOverlay: function(customOverlay) {\n overlay = customOverlay;\n }\n };\n}\n\nvar processUpdate = require('./process-update');\n\nvar customHandler;\nvar subscribeAllHandler;\nfunction processMessage(obj) {\n switch(obj.action) {\n case \"building\":\n if (options.log) {\n console.log(\n \"[HMR] bundle \" + (obj.name ? \"'\" + obj.name + \"' \" : \"\") +\n \"rebuilding\"\n );\n }\n break;\n case \"built\":\n if (options.log) {\n console.log(\n \"[HMR] bundle \" + (obj.name ? \"'\" + obj.name + \"' \" : \"\") +\n \"rebuilt in \" + obj.time + \"ms\"\n );\n }\n // fall through\n case \"sync\":\n if (obj.name && options.name && obj.name !== options.name) {\n return;\n }\n if (obj.errors.length > 0) {\n if (reporter) reporter.problems('errors', obj);\n } else {\n if (reporter) {\n if (obj.warnings.length > 0) {\n reporter.problems('warnings', obj);\n } else {\n reporter.cleanProblemsCache();\n }\n reporter.success();\n }\n processUpdate(obj.hash, obj.modules, options);\n }\n break;\n default:\n if (customHandler) {\n customHandler(obj);\n }\n }\n\n if (subscribeAllHandler) {\n subscribeAllHandler(obj);\n }\n}\n\nif (module) {\n module.exports = {\n subscribeAll: function subscribeAll(handler) {\n subscribeAllHandler = handler;\n },\n subscribe: function subscribe(handler) {\n customHandler = handler;\n },\n useCustomOverlay: function useCustomOverlay(customOverlay) {\n if (reporter) reporter.useCustomOverlay(customOverlay);\n },\n setOptionsAndConnect: setOptionsAndConnect\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// node_modules/webpack-hot-middleware/client.js","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// node_modules/webpack/buildin/module.js","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n\n\n// WEBPACK FOOTER //\n// node_modules/querystring-es3/index.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/querystring-es3/decode.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/querystring-es3/encode.js","'use strict';\nvar ansiRegex = require('ansi-regex')();\n\nmodule.exports = function (str) {\n\treturn typeof str === 'string' ? str.replace(ansiRegex, '') : str;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/strip-ansi/index.js","'use strict';\nmodule.exports = function () {\n\treturn /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/ansi-regex/index.js","/*eslint-env browser*/\n\nvar clientOverlay = document.createElement('div');\nclientOverlay.id = 'webpack-hot-middleware-clientOverlay';\nvar styles = {\n background: 'rgba(0,0,0,0.85)',\n color: '#E8E8E8',\n lineHeight: '1.2',\n whiteSpace: 'pre',\n fontFamily: 'Menlo, Consolas, monospace',\n fontSize: '13px',\n position: 'fixed',\n zIndex: 9999,\n padding: '10px',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n overflow: 'auto',\n dir: 'ltr',\n textAlign: 'left'\n};\n\nvar ansiHTML = require('ansi-html');\nvar colors = {\n reset: ['transparent', 'transparent'],\n black: '181818',\n red: 'E36049',\n green: 'B3CB74',\n yellow: 'FFD080',\n blue: '7CAFC2',\n magenta: '7FACCA',\n cyan: 'C3C2EF',\n lightgrey: 'EBE7E3',\n darkgrey: '6D7891'\n};\n\nvar Entities = require('html-entities').AllHtmlEntities;\nvar entities = new Entities();\n\nfunction showProblems(type, lines) {\n clientOverlay.innerHTML = '';\n lines.forEach(function(msg) {\n msg = ansiHTML(entities.encode(msg));\n var div = document.createElement('div');\n div.style.marginBottom = '26px';\n div.innerHTML = problemType(type) + ' in ' + msg;\n clientOverlay.appendChild(div);\n });\n if (document.body) {\n document.body.appendChild(clientOverlay);\n }\n}\n\nfunction clear() {\n if (document.body && clientOverlay.parentNode) {\n document.body.removeChild(clientOverlay);\n }\n}\n\nfunction problemType (type) {\n var problemColors = {\n errors: colors.red,\n warnings: colors.yellow\n };\n var color = problemColors[type] || colors.red;\n return (\n '' +\n type.slice(0, -1).toUpperCase() +\n ''\n );\n}\n\nmodule.exports = function(options) {\n for (var color in options.overlayColors) {\n if (color in colors) {\n colors[color] = options.overlayColors[color];\n }\n ansiHTML.setColors(colors);\n }\n\n for (var style in options.overlayStyles) {\n styles[style] = options.overlayStyles[style];\n }\n\n for (var key in styles) {\n clientOverlay.style[key] = styles[key];\n }\n\n return {\n showProblems: showProblems,\n clear: clear\n }\n};\n\nmodule.exports.clear = clear;\nmodule.exports.showProblems = showProblems;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/webpack-hot-middleware/client-overlay.js","'use strict'\n\nmodule.exports = ansiHTML\n\n// Reference to https://github.com/sindresorhus/ansi-regex\nvar _regANSI = /(?:(?:\\u001b\\[)|\\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\\u001b[A-M]/\n\nvar _defColors = {\n reset: ['fff', '000'], // [FOREGROUD_COLOR, BACKGROUND_COLOR]\n black: '000',\n red: 'ff0000',\n green: '209805',\n yellow: 'e8bf03',\n blue: '0000ff',\n magenta: 'ff00ff',\n cyan: '00ffee',\n lightgrey: 'f0f0f0',\n darkgrey: '888'\n}\nvar _styles = {\n 30: 'black',\n 31: 'red',\n 32: 'green',\n 33: 'yellow',\n 34: 'blue',\n 35: 'magenta',\n 36: 'cyan',\n 37: 'lightgrey'\n}\nvar _openTags = {\n '1': 'font-weight:bold', // bold\n '2': 'opacity:0.5', // dim\n '3': '', // italic\n '4': '', // underscore\n '8': 'display:none', // hidden\n '9': '' // delete\n}\nvar _closeTags = {\n '23': '', // reset italic\n '24': '', // reset underscore\n '29': '' // reset delete\n}\n\n;[0, 21, 22, 27, 28, 39, 49].forEach(function (n) {\n _closeTags[n] = ''\n})\n\n/**\n * Converts text with ANSI color codes to HTML markup.\n * @param {String} text\n * @returns {*}\n */\nfunction ansiHTML (text) {\n // Returns the text if the string has no ANSI escape code.\n if (!_regANSI.test(text)) {\n return text\n }\n\n // Cache opened sequence.\n var ansiCodes = []\n // Replace with markup.\n var ret = text.replace(/\\033\\[(\\d+)*m/g, function (match, seq) {\n var ot = _openTags[seq]\n if (ot) {\n // If current sequence has been opened, close it.\n if (!!~ansiCodes.indexOf(seq)) { // eslint-disable-line no-extra-boolean-cast\n ansiCodes.pop()\n return ''\n }\n // Open tag.\n ansiCodes.push(seq)\n return ot[0] === '<' ? ot : ''\n }\n\n var ct = _closeTags[seq]\n if (ct) {\n // Pop sequence\n ansiCodes.pop()\n return ct\n }\n return ''\n })\n\n // Make sure tags are closed.\n var l = ansiCodes.length\n ;(l > 0) && (ret += Array(l + 1).join(''))\n\n return ret\n}\n\n/**\n * Customize colors.\n * @param {Object} colors reference to _defColors\n */\nansiHTML.setColors = function (colors) {\n if (typeof colors !== 'object') {\n throw new Error('`colors` parameter must be an Object.')\n }\n\n var _finalColors = {}\n for (var key in _defColors) {\n var hex = colors.hasOwnProperty(key) ? colors[key] : null\n if (!hex) {\n _finalColors[key] = _defColors[key]\n continue\n }\n if ('reset' === key) {\n if (typeof hex === 'string') {\n hex = [hex]\n }\n if (!Array.isArray(hex) || hex.length === 0 || hex.some(function (h) {\n return typeof h !== 'string'\n })) {\n throw new Error('The value of `' + key + '` property must be an Array and each item could only be a hex string, e.g.: FF0000')\n }\n var defHexColor = _defColors[key]\n if (!hex[0]) {\n hex[0] = defHexColor[0]\n }\n if (hex.length === 1 || !hex[1]) {\n hex = [hex[0]]\n hex.push(defHexColor[1])\n }\n\n hex = hex.slice(0, 2)\n } else if (typeof hex !== 'string') {\n throw new Error('The value of `' + key + '` property must be a hex string, e.g.: FF0000')\n }\n _finalColors[key] = hex\n }\n _setTags(_finalColors)\n}\n\n/**\n * Reset colors.\n */\nansiHTML.reset = function () {\n _setTags(_defColors)\n}\n\n/**\n * Expose tags, including open and close.\n * @type {Object}\n */\nansiHTML.tags = {}\n\nif (Object.defineProperty) {\n Object.defineProperty(ansiHTML.tags, 'open', {\n get: function () { return _openTags }\n })\n Object.defineProperty(ansiHTML.tags, 'close', {\n get: function () { return _closeTags }\n })\n} else {\n ansiHTML.tags.open = _openTags\n ansiHTML.tags.close = _closeTags\n}\n\nfunction _setTags (colors) {\n // reset all\n _openTags['0'] = 'font-weight:normal;opacity:1;color:#' + colors.reset[0] + ';background:#' + colors.reset[1]\n // inverse\n _openTags['7'] = 'color:#' + colors.reset[1] + ';background:#' + colors.reset[0]\n // dark grey\n _openTags['90'] = 'color:#' + colors.darkgrey\n\n for (var code in _styles) {\n var color = _styles[code]\n var oriColor = colors[color] || '000'\n _openTags[code] = 'color:#' + oriColor\n code = parseInt(code)\n _openTags[(code + 10).toString()] = 'background:#' + oriColor\n }\n}\n\nansiHTML.reset()\n\n\n\n// WEBPACK FOOTER //\n// node_modules/ansi-html/index.js","module.exports = {\n XmlEntities: require('./lib/xml-entities.js'),\n Html4Entities: require('./lib/html4-entities.js'),\n Html5Entities: require('./lib/html5-entities.js'),\n AllHtmlEntities: require('./lib/html5-entities.js')\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/html-entities/index.js","var ALPHA_INDEX = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&apos': '\\'',\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': '\\'',\n '&': '&'\n};\n\nvar CHAR_INDEX = {\n 60: 'lt',\n 62: 'gt',\n 34: 'quot',\n 39: 'apos',\n 38: 'amp'\n};\n\nvar CHAR_S_INDEX = {\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '&': '&'\n};\n\n/**\n * @constructor\n */\nfunction XmlEntities() {}\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.encode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/<|>|\"|'|&/g, function(s) {\n return CHAR_S_INDEX[s];\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.encode = function(str) {\n return new XmlEntities().encode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.decode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&#?[0-9a-zA-Z]+;?/g, function(s) {\n if (s.charAt(1) === '#') {\n var code = s.charAt(2).toLowerCase() === 'x' ?\n parseInt(s.substr(3), 16) :\n parseInt(s.substr(2));\n\n if (isNaN(code) || code < -32768 || code > 65535) {\n return '';\n }\n return String.fromCharCode(code);\n }\n return ALPHA_INDEX[s] || s;\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.decode = function(str) {\n return new XmlEntities().decode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.encodeNonUTF = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var alpha = CHAR_INDEX[c];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n if (c < 32 || c > 126) {\n result += '&#' + c + ';';\n } else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.encodeNonUTF = function(str) {\n return new XmlEntities().encodeNonUTF(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.encodeNonASCII = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLenght = str.length;\n var result = '';\n var i = 0;\n while (i < strLenght) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n result += '&#' + c + ';';\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.encodeNonASCII = function(str) {\n return new XmlEntities().encodeNonASCII(str);\n };\n\nmodule.exports = XmlEntities;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/html-entities/lib/xml-entities.js","var HTML_ALPHA = ['apos', 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot', 'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'Aelig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'there4', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams'];\nvar HTML_CODES = [39, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 34, 38, 60, 62, 338, 339, 352, 353, 376, 710, 732, 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, 402, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8226, 8230, 8242, 8243, 8254, 8260, 8472, 8465, 8476, 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830];\n\nvar alphaIndex = {};\nvar numIndex = {};\n\nvar i = 0;\nvar length = HTML_ALPHA.length;\nwhile (i < length) {\n var a = HTML_ALPHA[i];\n var c = HTML_CODES[i];\n alphaIndex[a] = String.fromCharCode(c);\n numIndex[c] = a;\n i++;\n}\n\n/**\n * @constructor\n */\nfunction Html4Entities() {}\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.decode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function(s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1).toLowerCase() === 'x' ?\n parseInt(entity.substr(2), 16) :\n parseInt(entity.substr(1));\n\n if (!(isNaN(code) || code < -32768 || code > 65535)) {\n chr = String.fromCharCode(code);\n }\n } else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.decode = function(str) {\n return new Html4Entities().decode(str);\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.encode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var alpha = numIndex[str.charCodeAt(i)];\n result += alpha ? \"&\" + alpha + \";\" : str.charAt(i);\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.encode = function(str) {\n return new Html4Entities().encode(str);\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.encodeNonUTF = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var cc = str.charCodeAt(i);\n var alpha = numIndex[cc];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n } else if (cc < 32 || cc > 126) {\n result += \"&#\" + cc + \";\";\n } else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.encodeNonUTF = function(str) {\n return new Html4Entities().encodeNonUTF(str);\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.encodeNonASCII = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n result += '&#' + c + ';';\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.encodeNonASCII = function(str) {\n return new Html4Entities().encodeNonASCII(str);\n};\n\nmodule.exports = Html4Entities;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/html-entities/lib/html4-entities.js","/**\n * Based heavily on https://github.com/webpack/webpack/blob/\n * c0afdf9c6abc1dd70707c594e473802a566f7b6e/hot/only-dev-server.js\n * Original copyright Tobias Koppers @sokra (MIT license)\n */\n\n/* global window __webpack_hash__ */\n\nif (!module.hot) {\n throw new Error(\"[HMR] Hot Module Replacement is disabled.\");\n}\n\nvar hmrDocsUrl = \"https://webpack.js.org/concepts/hot-module-replacement/\"; // eslint-disable-line max-len\n\nvar lastHash;\nvar failureStatuses = { abort: 1, fail: 1 };\nvar applyOptions = { \t\t\t\t\n ignoreUnaccepted: true,\n ignoreDeclined: true,\n ignoreErrored: true,\n onUnaccepted: function(data) {\n console.warn(\"Ignored an update to unaccepted module \" + data.chain.join(\" -> \"));\n },\n onDeclined: function(data) {\n console.warn(\"Ignored an update to declined module \" + data.chain.join(\" -> \"));\n },\n onErrored: function(data) {\n console.error(data.error);\n console.warn(\"Ignored an error while updating module \" + data.moduleId + \" (\" + data.type + \")\");\n } \n}\n\nfunction upToDate(hash) {\n if (hash) lastHash = hash;\n return lastHash == __webpack_hash__;\n}\n\nmodule.exports = function(hash, moduleMap, options) {\n var reload = options.reload;\n if (!upToDate(hash) && module.hot.status() == \"idle\") {\n if (options.log) console.log(\"[HMR] Checking for updates on the server...\");\n check();\n }\n\n function check() {\n var cb = function(err, updatedModules) {\n if (err) return handleError(err);\n\n if(!updatedModules) {\n if (options.warn) {\n console.warn(\"[HMR] Cannot find update (Full reload needed)\");\n console.warn(\"[HMR] (Probably because of restarting the server)\");\n }\n performReload();\n return null;\n }\n\n var applyCallback = function(applyErr, renewedModules) {\n if (applyErr) return handleError(applyErr);\n\n if (!upToDate()) check();\n\n logUpdates(updatedModules, renewedModules);\n };\n\n var applyResult = module.hot.apply(applyOptions, applyCallback);\n // webpack 2 promise\n if (applyResult && applyResult.then) {\n // HotModuleReplacement.runtime.js refers to the result as `outdatedModules`\n applyResult.then(function(outdatedModules) {\n applyCallback(null, outdatedModules);\n });\n applyResult.catch(applyCallback);\n }\n\n };\n\n var result = module.hot.check(false, cb);\n // webpack 2 promise\n if (result && result.then) {\n result.then(function(updatedModules) {\n cb(null, updatedModules);\n });\n result.catch(cb);\n }\n }\n\n function logUpdates(updatedModules, renewedModules) {\n var unacceptedModules = updatedModules.filter(function(moduleId) {\n return renewedModules && renewedModules.indexOf(moduleId) < 0;\n });\n\n if(unacceptedModules.length > 0) {\n if (options.warn) {\n console.warn(\n \"[HMR] The following modules couldn't be hot updated: \" +\n \"(Full reload needed)\\n\" +\n \"This is usually because the modules which have changed \" +\n \"(and their parents) do not know how to hot reload themselves. \" +\n \"See \" + hmrDocsUrl + \" for more details.\"\n );\n unacceptedModules.forEach(function(moduleId) {\n console.warn(\"[HMR] - \" + moduleMap[moduleId]);\n });\n }\n performReload();\n return;\n }\n\n if (options.log) {\n if(!renewedModules || renewedModules.length === 0) {\n console.log(\"[HMR] Nothing hot updated.\");\n } else {\n console.log(\"[HMR] Updated modules:\");\n renewedModules.forEach(function(moduleId) {\n console.log(\"[HMR] - \" + moduleMap[moduleId]);\n });\n }\n\n if (upToDate()) {\n console.log(\"[HMR] App is up to date.\");\n }\n }\n }\n\n function handleError(err) {\n if (module.hot.status() in failureStatuses) {\n if (options.warn) {\n console.warn(\"[HMR] Cannot check for update (Full reload needed)\");\n console.warn(\"[HMR] \" + err.stack || err.message);\n }\n performReload();\n return;\n }\n if (options.warn) {\n console.warn(\"[HMR] Update check failed: \" + err.stack || err.message);\n }\n }\n\n function performReload() {\n if (reload) {\n if (options.warn) console.warn(\"[HMR] Reloading page\");\n window.location.reload();\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/webpack-hot-middleware/process-update.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n// WEBPACK FOOTER //\n// node_modules/webpack/buildin/global.js","/**\n * Swiper 4.1.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2018 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 11, 2018\n */\n\nimport { $, add, addClass, append, attr, children, closest, css, data, each, eq, find, hasClass, html, index, is, next, nextAll, off, offset, on, outerHeight, outerWidth, parent, parents, prepend, prev, prevAll, remove, removeAttr, removeClass, styles, text, toggleClass, transform, transition, transitionEnd, trigger } from 'dom7/dist/dom7.modular';\nimport { document, window } from 'ssr-window';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n const testDiv = document.createElement('div');\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!(window.navigator.pointerEnabled || window.PointerEvent),\n prefixedPointerEvents: !!window.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n const style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (window.Modernizr && window.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n const style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n\n flexbox: (function checkFlexbox() {\n const style = testDiv.style;\n const styles$$1 = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (let i = 0; i < styles$$1.length; i += 1) {\n if (styles$$1[i] in style) return true;\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n on(events, handler) {\n const self = this;\n if (typeof handler !== 'function') return self;\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event].push(handler);\n });\n return self;\n }\n once(events, handler) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n handler.apply(self, args);\n self.off(events, onceHandler);\n }\n return self.on(events, onceHandler);\n }\n off(events, handler) {\n const self = this;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else {\n self.eventsListeners[event].forEach((eventHandler, index$$1) => {\n if (eventHandler === handler) {\n self.eventsListeners[event].splice(index$$1, 1);\n }\n });\n }\n });\n return self;\n }\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data$$1;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data$$1 = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data$$1 = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data$$1);\n });\n }\n });\n return self;\n }\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nvar updateSize = function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n};\n\nvar updateSlides = function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtl, wrongRTL,\n } = swiper;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSlidesLength = slidesLength;\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index$$1 = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide\n .css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n if (params.slidesPerView === 'auto') {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index$$1) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if ((index$$1) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index$$1 += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(snapGrid[i]);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(snapGrid[i]);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.css({ marginLeft: `${spaceBetween}px` });\n else slides.css({ marginRight: `${spaceBetween}px` });\n } else slides.css({ marginBottom: `${spaceBetween}px` });\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n};\n\nvar updateAutoHeight = function () {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index$$1 = swiper.activeIndex + i;\n if (index$$1 > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index$$1)[0]);\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n};\n\nvar updateSlidesOffset = function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n};\n\nvar updateSlidesProgress = function (translate = this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress =\n (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size) ||\n (slideAfter > 0 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n};\n\nvar updateProgress = function (translate = this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n};\n\nvar updateSlidesClasses = function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n};\n\nvar updateActiveIndex = function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtl ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n};\n\nvar updateClickedSlide = function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n};\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nvar getTranslate = function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n};\n\nvar setTranslate = function (translate, byController) {\n const swiper = this;\n const {\n rtl, params, $wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (!params.virtualTranslate) {\n if (Support.transforms3d) $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n else $wrapperEl.transform(`translate(${x}px, ${y}px)`);\n }\n\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n};\n\nvar minTranslate = function () {\n return (-this.snapGrid[0]);\n};\n\nvar maxTranslate = function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n};\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n};\n\nvar setTransition = function (duration, byController) {\n const swiper = this;\n\n swiper.$wrapperEl.transition(duration);\n\n swiper.emit('setTransition', duration, byController);\n};\n\nvar transitionStart = function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n};\n\nvar transitionEnd$1 = function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex } = swiper;\n swiper.animating = false;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n};\n\nvar transition$1 = {\n setTransition,\n transitionStart,\n transitionEnd: transitionEnd$1,\n};\n\nvar slideTo = function (index$$1 = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index$$1;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtl, $wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventIntercationOnTransition) {\n return false;\n }\n\n let snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd(runCallbacks, direction);\n });\n }\n }\n\n return true;\n};\n\nvar slideToLoop = function (index$$1 = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index$$1;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n};\n\n/* eslint no-unused-vars: \"off\" */\nvar slideNext = function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n};\n\n/* eslint no-unused-vars: \"off\" */\nvar slidePrev = function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex - 1, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex - 1, speed, runCallbacks, internal);\n};\n\n/* eslint no-unused-vars: \"off\" */\nvar slideReset = function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n};\n\nvar slideToClickedSlide = function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) ||\n (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n};\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClickedSlide,\n};\n\nvar loopCreate = function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index$$1, el) => {\n const slide = $(el);\n if (index$$1 < swiper.loopedSlides) appendSlides.push(el);\n if (index$$1 < slides.length && index$$1 >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index$$1);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n};\n\nvar loopFix = function () {\n const swiper = this;\n const {\n params, activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex > slides.length - (params.slidesPerView * 2))) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n};\n\nvar loopDestroy = function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n};\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nvar setGrabCursor = function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n};\n\nvar unsetGrabCursor = function () {\n const swiper = this;\n if (Support.touch) return;\n swiper.el.style.cursor = '';\n};\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nvar appendSlide = function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n};\n\nvar prependSlide = function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n};\n\nvar removeSlide = function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndex;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n};\n\nvar removeAllSlides = function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n};\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: window.cordova || window.phonegap,\n phonegap: window.cordova || window.phonegap,\n };\n\n const windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n\n\n // Windows\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n\n // Webview\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n const osVersionArr = device.osVersion.split('.');\n const metaViewport = document.querySelector('meta[name=\"viewport\"]');\n device.minimalUi =\n !device.webView &&\n (ipod || iphone) &&\n (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) &&\n metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nvar onTouchStart = function (event) {\n const swiper = this;\n const data$$1 = swiper.touchEventsData;\n const { params, touches } = swiper;\n if (swiper.animating && params.preventIntercationOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n data$$1.isTouchEvent = e.type === 'touchstart';\n if (!data$$1.isTouchEvent && 'which' in e && e.which === 3) return;\n if (data$$1.isTouched && data$$1.isMoved) return;\n if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$(e).closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n if (\n Device.ios &&\n !Device.cordova &&\n params.iOSEdgeSwipeDetection &&\n (startX <= params.iOSEdgeSwipeThreshold) &&\n (startX >= window.screen.width - params.iOSEdgeSwipeThreshold)\n ) {\n return;\n }\n\n Utils.extend(data$$1, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data$$1.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data$$1.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($(e.target).is(data$$1.formElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data$$1.formElements) &&\n document.activeElement !== e.target\n ) {\n document.activeElement.blur();\n }\n if (preventDefault && swiper.allowTouchMove) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n};\n\nvar onTouchMove = function (event) {\n const swiper = this;\n const data$$1 = swiper.touchEventsData;\n const { params, touches, rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data$$1.isTouched) {\n if (data$$1.startMoving && data$$1.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data$$1.isTouchEvent && e.type === 'mousemove') return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data$$1.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data$$1.touchStartTime = Utils.now();\n }\n return;\n }\n if (data$$1.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data$$1.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data$$1.formElements)) {\n data$$1.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data$$1.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n\n if (typeof data$$1.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data$$1.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data$$1.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data$$1.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data$$1.startMoving = true;\n }\n }\n if (data$$1.isScrolling) {\n data$$1.isTouched = false;\n return;\n }\n if (!data$$1.startMoving) {\n return;\n }\n swiper.allowClick = false;\n e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data$$1.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data$$1.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data$$1.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data$$1.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data$$1.currentTranslate = diff + data$$1.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data$$1.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data$$1.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data$$1.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data$$1.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data$$1.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data$$1.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data$$1.currentTranslate < data$$1.startTranslate) {\n data$$1.currentTranslate = data$$1.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data$$1.currentTranslate > data$$1.startTranslate) {\n data$$1.currentTranslate = data$$1.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data$$1.allowThresholdMove) {\n if (!data$$1.allowThresholdMove) {\n data$$1.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data$$1.currentTranslate = data$$1.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data$$1.currentTranslate = data$$1.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data$$1.velocities.length === 0) {\n data$$1.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data$$1.touchStartTime,\n });\n }\n data$$1.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data$$1.currentTranslate);\n // Update translate\n swiper.setTranslate(data$$1.currentTranslate);\n};\n\nvar onTouchEnd = function (event) {\n const swiper = this;\n const data$$1 = swiper.touchEventsData;\n\n const {\n params, touches, rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data$$1.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data$$1.allowTouchCallbacks = false;\n if (!data$$1.isTouched) {\n if (data$$1.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data$$1.isMoved && data$$1.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data$$1.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n if (timeDiff < 300 && (touchEndTime - data$$1.lastClickTime) > 300) {\n if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);\n data$$1.clickTimeout = Utils.nextTick(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data$$1.lastClickTime) < 300) {\n if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);\n swiper.emit('doubleTap', e);\n }\n }\n\n data$$1.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data$$1.isTouched || !data$$1.isMoved || !swiper.swipeDirection || touches.diff === 0 || data$$1.currentTranslate === data$$1.startTranslate) {\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n return;\n }\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data$$1.currentTranslate;\n }\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n } else if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data$$1.velocities.length > 1) {\n const lastMoveEvent = data$$1.velocities.pop();\n const velocityEvent = data$$1.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data$$1.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data$$1.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data$$1.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n } else if (params.freeModeSticky) {\n swiper.slideReset();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data$$1.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n};\n\nvar onResize = function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n const newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n};\n\nvar onClick = function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.on('resize observerUpdate', onResize);\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.off('resize observerUpdate', onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nvar setBreakpoint = function () {\n const swiper = this;\n const { activeIndex, loopedSlides = 0, params } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n // Set breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakPointsParams = breakpoint in breakpoints ? breakpoints[breakpoint] : swiper.originalParams;\n const needsReLoop = params.loop && (breakPointsParams.slidesPerView !== params.slidesPerView);\n\n Utils.extend(swiper.params, breakPointsParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n swiper.emit('breakpoint', breakPointsParams);\n }\n};\n\nvar getBreakpoint = function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n const points = [];\n Object.keys(breakpoints).forEach((point) => {\n points.push(point);\n });\n points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n for (let i = 0; i < points.length; i += 1) {\n const point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n};\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nvar addClasses = function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n // WP8 Touch Events Fix\n if (Browser.isIE && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push(`wp8-${params.direction}`);\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n};\n\nvar removeClasses = function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n};\n\nvar classes = { addClasses, removeClasses };\n\nvar loadImage = function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n};\n\nvar preloadImages = function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n};\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const wasLocked = swiper.isLocked;\n\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowTouchMove = !swiper.isLocked;\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventIntercationOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n\nconst prototypes = {\n update,\n translate,\n transition: transition$1,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper$1 extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper$1.prototype[protoMethod]) {\n Swiper$1.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object') return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object' &&\n !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index$$1, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper$1(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n const $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtl ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n swiper.emit('update');\n }\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n }\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static get Class() {\n return SwiperClass;\n }\n static get $() {\n return $;\n }\n}\n\nvar Device$2 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$2 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nvar Browser$2 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n mutations.forEach((mutation) => {\n swiper.emit('observerUpdate', mutation);\n });\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: false });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtl && swiper.isHorizontal()) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1);\n slidesBefore = slidesPerGroup;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset$$1 = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset: offset$$1,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset$$1 !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset$$1}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset$$1,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index$$1) => {\n swiper.$wrapperEl.append(renderSlide(slides[index$$1], index$$1));\n });\n prependIndexes.sort((a, b) => a < b).forEach((index$$1) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index$$1], index$$1));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset$$1}px`);\n onRendered();\n },\n renderSlide(slide, index$$1) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index$$1]) {\n return swiper.virtual.cache[index$$1];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index$$1))\n : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index$$1);\n if (params.cache) swiper.virtual.cache[index$$1] = $slideEl;\n return $slideEl;\n },\n appendSlide(slide) {\n const swiper = this;\n swiper.virtual.slides.push(slide);\n swiper.virtual.update(true);\n },\n prependSlide(slide) {\n const swiper = this;\n swiper.virtual.slides.unshift(slide);\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n newCache[cachedIndex + 1] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideNext(0);\n },\n};\n\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n swiper.virtual.update();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (swiper.rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth &&\n point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !swiper.rtl) || (kc === 37 && swiper.rtl)) swiper.slideNext();\n if ((kc === 37 && !swiper.rtl) || (kc === 39 && swiper.rtl)) swiper.slidePrev();\n } else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) swiper.slideNext();\n if (kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported &&\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n event: (function getEvent() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }()),\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtl ? -1 : 1;\n\n const data$$1 = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY)) delta = data$$1.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data$$1.pixelY) > Math.abs(data$$1.pixelX)) delta = data$$1.pixelY;\n else return true;\n } else {\n delta = Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY) ? -data$$1.pixelX * rtlFactor : -data$$1.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n }\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n } else {\n // Freemode or scrollContainer:\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideReset();\n }, 300);\n }\n // Emit event\n swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.stopAutoplay();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n enable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n lastScrollTime: Utils.now(),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.nextEl === 'string' &&\n $nextEl.length > 1 &&\n swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.prevEl === 'string' &&\n $prevEl.length > 1 &&\n swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', (e) => {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n });\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', (e) => {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n });\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click');\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click');\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(e.target).is($prevEl) &&\n !$(e.target).is($nextEl)\n ) {\n if ($nextEl) $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n if ($prevEl) $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n },\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n if (current > swiper.previousIndex && swiper.pagination.dynamicBulletIndex < (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex += 1;\n } else if (current < swiper.previousIndex && swiper.pagination.dynamicBulletIndex > 0) {\n swiper.pagination.dynamicBulletIndex -= 1;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (params.dynamicMainBullets - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index$$1, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(current + 1);\n $el.find(`.${params.totalClass}`).text(total);\n }\n if (params.type === 'progressbar') {\n const scale = (current + 1) / total;\n let scaleX = scale;\n let scaleY = 1;\n if (!swiper.isHorizontal()) {\n scaleY = scale;\n scaleX = 1;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index$$1 = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index$$1 += swiper.loopedSlides;\n swiper.slideTo(index$$1);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n swiper.pagination.$el.length > 0 &&\n !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl && swiper.isHorizontal()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n } else {\n $dragEl.transform(`translateX(${newPos}px)`);\n }\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n } else {\n $dragEl.transform(`translateY(${newPos}px)`);\n }\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbarHide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar } = swiper;\n const { $el, dragSize, trackSize } = scrollbar;\n\n let pointerPosition;\n if (swiper.isHorizontal()) {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n } else {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n }\n let positionRatio;\n positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (swiper.rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideReset();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEvents, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListener ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListener ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.addEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEvents, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListener ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListener ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.removeEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index$$1, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index$$1, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index$$1, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n swiper.zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) image.startX = -image.startX;\n if (swiper.rtl) image.startY = -image.startY;\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal() &&\n (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } else if (\n !swiper.isHorizontal() &&\n (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n};\n\nvar Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\nconst Lazy = {\n loadInSlide(index$$1, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index$$1 === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index$$1}\"]`)\n : swiper.slides.eq(index$$1);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index$$1) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index$$1}\"]`).length) {\n return true;\n }\n } else if (slides[index$$1]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index$$1 = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index$$1);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ?\n new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) :\n new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = c.rtl && c.params.direction === 'horizontal' ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper$1) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper$1 && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper$1) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper$1 && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nvar A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: false,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index$$1) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index$$1);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text$$1) {\n return text$$1.toString().toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index$$1 = slide.index();\n swiper.slideTo(index$$1, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n swiper.slideTo(swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index());\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index$$1 = slide.index();\n swiper.slideTo(index$$1, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n });\n }\n },\n};\n\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n};\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset$$1 = $slideEl[0].swiperSlideOffset;\n let tx = -offset$$1;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ?\n Math.max(1 - Math.abs($slideEl[0].progress), 0) :\n 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform$$1 = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform$$1);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) +\n (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset$$1 = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset$$1}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset$$1 = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset$$1;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (swiper.rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform$$1 = swiper.translate;\n const center = isHorizontal ? -transform$$1 + (swiperWidth / 2) : -transform$$1 + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n let translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n\n// Swiper Class\n// Core Modules\nconst components = [\n Device$2,\n Support$2,\n Browser$2,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow\n];\n\nif (typeof Swiper$1.use === 'undefined') {\n Swiper$1.use = Swiper$1.Class.use;\n Swiper$1.installModule = Swiper$1.Class.installModule;\n}\n\nSwiper$1.use(components);\n\nexport default Swiper$1;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/swiper/dist/js/swiper.esm.bundle.js","var escape = require(\"../../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \"@charset \\\"UTF-8\\\";\\n\\n/* ==========================================================================\\n L E A P\\n ========================================================================== */\\n\\n@-webkit-keyframes inFromRight {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@-o-keyframes inFromRight {\\n from {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@keyframes inFromRight {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@-webkit-keyframes outToRight {\\n to {\\n opacity: 0;\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0);\\n }\\n}\\n\\n@-o-keyframes outToRight {\\n to {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0);\\n }\\n}\\n\\n@keyframes outToRight {\\n to {\\n opacity: 0;\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0);\\n }\\n}\\n\\n@-webkit-keyframes inFromLeft {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@-o-keyframes inFromLeft {\\n from {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@keyframes inFromLeft {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@-webkit-keyframes outToLeft {\\n to {\\n opacity: 0;\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0);\\n }\\n}\\n\\n@-o-keyframes outToLeft {\\n to {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0);\\n }\\n}\\n\\n@keyframes outToLeft {\\n to {\\n opacity: 0;\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0);\\n }\\n}\\n\\n.is-magic {\\n -webkit-transform: translateY(50px);\\n -o-transform: translateY(50px);\\n transform: translateY(50px);\\n -webkit-transition-property: opacity, -webkit-transform;\\n transition-property: opacity, -webkit-transform;\\n -o-transition-property: opacity, -o-transform;\\n transition-property: transform, opacity;\\n transition-property: transform, opacity, -webkit-transform, -o-transform;\\n -webkit-transition-duration: 1s;\\n -o-transition-duration: 1s;\\n transition-duration: 1s;\\n -webkit-transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);\\n -o-transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);\\n transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);\\n opacity: 0 !important;\\n -webkit-transition-delay: 0s;\\n -o-transition-delay: 0s;\\n transition-delay: 0s;\\n}\\n\\n.is-magic.is-loaded {\\n opacity: 1 !important;\\n -webkit-transform: translateY(0);\\n -o-transform: translateY(0);\\n transform: translateY(0);\\n}\\n\\n.is-magic.delay--1.is-loaded {\\n -webkit-transition-delay: 0.3s !important;\\n -o-transition-delay: 0.3s !important;\\n transition-delay: 0.3s !important;\\n}\\n\\n.is-magic.delay--2.is-loaded {\\n -webkit-transition-delay: 0.6s !important;\\n -o-transition-delay: 0.6s !important;\\n transition-delay: 0.6s !important;\\n}\\n\\n.is-magic.delay--3.is-loaded {\\n -webkit-transition-delay: 0.9s !important;\\n -o-transition-delay: 0.9s !important;\\n transition-delay: 0.9s !important;\\n}\\n\\n.is-magic.delay--4.is-loaded {\\n -webkit-transition-delay: 1.2s !important;\\n -o-transition-delay: 1.2s !important;\\n transition-delay: 1.2s !important;\\n}\\n\\n.is-magic.delay--5.is-loaded {\\n -webkit-transition-delay: 1.5s !important;\\n -o-transition-delay: 1.5s !important;\\n transition-delay: 1.5s !important;\\n}\\n\\n.is-magic.delay--6.is-loaded {\\n -webkit-transition-delay: 1.8s !important;\\n -o-transition-delay: 1.8s !important;\\n transition-delay: 1.8s !important;\\n}\\n\\n.is-magic.delay--7.is-loaded {\\n -webkit-transition-delay: 2.1s !important;\\n -o-transition-delay: 2.1s !important;\\n transition-delay: 2.1s !important;\\n}\\n\\n.is-magic.delay--8.is-loaded {\\n -webkit-transition-delay: 2.4s !important;\\n -o-transition-delay: 2.4s !important;\\n transition-delay: 2.4s !important;\\n}\\n\\n.is-magic.delay--9.is-loaded {\\n -webkit-transition-delay: 2.7s !important;\\n -o-transition-delay: 2.7s !important;\\n transition-delay: 2.7s !important;\\n}\\n\\n.is-magic.delay--10.is-loaded {\\n -webkit-transition-delay: 3s !important;\\n -o-transition-delay: 3s !important;\\n transition-delay: 3s !important;\\n}\\n\\n.is-magic.delay--11.is-loaded {\\n -webkit-transition-delay: 3.3s !important;\\n -o-transition-delay: 3.3s !important;\\n transition-delay: 3.3s !important;\\n}\\n\\n.is-magic.delay--12.is-loaded {\\n -webkit-transition-delay: 3.6s !important;\\n -o-transition-delay: 3.6s !important;\\n transition-delay: 3.6s !important;\\n}\\n\\n.is-magic.delay--13.is-loaded {\\n -webkit-transition-delay: 3.9s !important;\\n -o-transition-delay: 3.9s !important;\\n transition-delay: 3.9s !important;\\n}\\n\\n.is-magic.delay--14.is-loaded {\\n -webkit-transition-delay: 4.2s !important;\\n -o-transition-delay: 4.2s !important;\\n transition-delay: 4.2s !important;\\n}\\n\\n.is-magic.delay--15.is-loaded {\\n -webkit-transition-delay: 4.5s !important;\\n -o-transition-delay: 4.5s !important;\\n transition-delay: 4.5s !important;\\n}\\n\\n.is-magic.delay--16.is-loaded {\\n -webkit-transition-delay: 4.8s !important;\\n -o-transition-delay: 4.8s !important;\\n transition-delay: 4.8s !important;\\n}\\n\\n.is-magic.delay--17.is-loaded {\\n -webkit-transition-delay: 5.1s !important;\\n -o-transition-delay: 5.1s !important;\\n transition-delay: 5.1s !important;\\n}\\n\\n.is-magic.delay--18.is-loaded {\\n -webkit-transition-delay: 5.4s !important;\\n -o-transition-delay: 5.4s !important;\\n transition-delay: 5.4s !important;\\n}\\n\\n.is-magic.delay--19.is-loaded {\\n -webkit-transition-delay: 5.7s !important;\\n -o-transition-delay: 5.7s !important;\\n transition-delay: 5.7s !important;\\n}\\n\\n.is-magic.delay--20.is-loaded {\\n -webkit-transition-delay: 6s !important;\\n -o-transition-delay: 6s !important;\\n transition-delay: 6s !important;\\n}\\n\\n.is-magic.delay--21.is-loaded {\\n -webkit-transition-delay: 6.3s !important;\\n -o-transition-delay: 6.3s !important;\\n transition-delay: 6.3s !important;\\n}\\n\\n.is-magic.delay--22.is-loaded {\\n -webkit-transition-delay: 6.6s !important;\\n -o-transition-delay: 6.6s !important;\\n transition-delay: 6.6s !important;\\n}\\n\\n.is-magic.delay--23.is-loaded {\\n -webkit-transition-delay: 6.9s !important;\\n -o-transition-delay: 6.9s !important;\\n transition-delay: 6.9s !important;\\n}\\n\\n.is-magic.delay--24.is-loaded {\\n -webkit-transition-delay: 7.2s !important;\\n -o-transition-delay: 7.2s !important;\\n transition-delay: 7.2s !important;\\n}\\n\\n.is-magic.delay--25.is-loaded {\\n -webkit-transition-delay: 7.5s !important;\\n -o-transition-delay: 7.5s !important;\\n transition-delay: 7.5s !important;\\n}\\n\\n.is-magic.delay--26.is-loaded {\\n -webkit-transition-delay: 7.8s !important;\\n -o-transition-delay: 7.8s !important;\\n transition-delay: 7.8s !important;\\n}\\n\\n.is-magic.delay--27.is-loaded {\\n -webkit-transition-delay: 8.1s !important;\\n -o-transition-delay: 8.1s !important;\\n transition-delay: 8.1s !important;\\n}\\n\\n.is-magic.delay--28.is-loaded {\\n -webkit-transition-delay: 8.4s !important;\\n -o-transition-delay: 8.4s !important;\\n transition-delay: 8.4s !important;\\n}\\n\\n.is-magic.delay--29.is-loaded {\\n -webkit-transition-delay: 8.7s !important;\\n -o-transition-delay: 8.7s !important;\\n transition-delay: 8.7s !important;\\n}\\n\\n.is-magic.delay--30.is-loaded {\\n -webkit-transition-delay: 9s !important;\\n -o-transition-delay: 9s !important;\\n transition-delay: 9s !important;\\n}\\n\\n.is-magic.delay--31.is-loaded {\\n -webkit-transition-delay: 9.3s !important;\\n -o-transition-delay: 9.3s !important;\\n transition-delay: 9.3s !important;\\n}\\n\\n.is-magic.delay--32.is-loaded {\\n -webkit-transition-delay: 9.6s !important;\\n -o-transition-delay: 9.6s !important;\\n transition-delay: 9.6s !important;\\n}\\n\\n.is-magic.delay--33.is-loaded {\\n -webkit-transition-delay: 9.9s !important;\\n -o-transition-delay: 9.9s !important;\\n transition-delay: 9.9s !important;\\n}\\n\\n.is-magic.delay--34.is-loaded {\\n -webkit-transition-delay: 10.2s !important;\\n -o-transition-delay: 10.2s !important;\\n transition-delay: 10.2s !important;\\n}\\n\\n.is-magic.delay--35.is-loaded {\\n -webkit-transition-delay: 10.5s !important;\\n -o-transition-delay: 10.5s !important;\\n transition-delay: 10.5s !important;\\n}\\n\\n.is-magic.delay--36.is-loaded {\\n -webkit-transition-delay: 10.8s !important;\\n -o-transition-delay: 10.8s !important;\\n transition-delay: 10.8s !important;\\n}\\n\\n.is-magic.delay--37.is-loaded {\\n -webkit-transition-delay: 11.1s !important;\\n -o-transition-delay: 11.1s !important;\\n transition-delay: 11.1s !important;\\n}\\n\\n.is-magic.delay--38.is-loaded {\\n -webkit-transition-delay: 11.4s !important;\\n -o-transition-delay: 11.4s !important;\\n transition-delay: 11.4s !important;\\n}\\n\\n.is-magic.delay--39.is-loaded {\\n -webkit-transition-delay: 11.7s !important;\\n -o-transition-delay: 11.7s !important;\\n transition-delay: 11.7s !important;\\n}\\n\\n.is-magic.delay--40.is-loaded {\\n -webkit-transition-delay: 12s !important;\\n -o-transition-delay: 12s !important;\\n transition-delay: 12s !important;\\n}\\n\\n.is-magic.delay--41.is-loaded {\\n -webkit-transition-delay: 12.3s !important;\\n -o-transition-delay: 12.3s !important;\\n transition-delay: 12.3s !important;\\n}\\n\\n.is-magic.delay--42.is-loaded {\\n -webkit-transition-delay: 12.6s !important;\\n -o-transition-delay: 12.6s !important;\\n transition-delay: 12.6s !important;\\n}\\n\\n.is-magic.delay--43.is-loaded {\\n -webkit-transition-delay: 12.9s !important;\\n -o-transition-delay: 12.9s !important;\\n transition-delay: 12.9s !important;\\n}\\n\\n.is-magic.delay--44.is-loaded {\\n -webkit-transition-delay: 13.2s !important;\\n -o-transition-delay: 13.2s !important;\\n transition-delay: 13.2s !important;\\n}\\n\\n.is-magic.delay--45.is-loaded {\\n -webkit-transition-delay: 13.5s !important;\\n -o-transition-delay: 13.5s !important;\\n transition-delay: 13.5s !important;\\n}\\n\\n.is-magic.delay--46.is-loaded {\\n -webkit-transition-delay: 13.8s !important;\\n -o-transition-delay: 13.8s !important;\\n transition-delay: 13.8s !important;\\n}\\n\\n.is-magic.delay--47.is-loaded {\\n -webkit-transition-delay: 14.1s !important;\\n -o-transition-delay: 14.1s !important;\\n transition-delay: 14.1s !important;\\n}\\n\\n.is-magic.delay--48.is-loaded {\\n -webkit-transition-delay: 14.4s !important;\\n -o-transition-delay: 14.4s !important;\\n transition-delay: 14.4s !important;\\n}\\n\\n/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n\\n/**\\n * Spacing\\n */\\n\\n/**\\n * Typography\\n */\\n\\n/**\\n * Transitions\\n */\\n\\n/**\\n * Breakpoints\\n */\\n\\n/**\\n * Palette\\n */\\n\\n/**\\n * Colours\\n */\\n\\n/**\\n * Typography\\n */\\n\\n/**\\n * Widths\\n */\\n\\n/* Heights */\\n\\n/**\\n * Swiper 4.1.6\\n * Most modern mobile touch slider and framework with hardware accelerated transitions\\n * http://www.idangero.us/swiper/\\n *\\n * Copyright 2014-2018 Vladimir Kharlampidi\\n *\\n * Released under the MIT License\\n *\\n * Released on: February 11, 2018\\n */\\n\\n.swiper-container {\\n margin: 0 auto;\\n position: relative;\\n overflow: hidden;\\n list-style: none;\\n padding: 0;\\n z-index: 1;\\n}\\n\\n.swiper-container-no-flexbox .swiper-slide {\\n float: left;\\n}\\n\\n.swiper-container-vertical > .swiper-wrapper {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n\\n.swiper-wrapper {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-transition-property: -webkit-transform;\\n transition-property: -webkit-transform;\\n -o-transition-property: transform;\\n -o-transition-property: -o-transform;\\n transition-property: transform;\\n transition-property: transform, -webkit-transform, -o-transform;\\n transition-property: transform,-webkit-transform;\\n -webkit-box-sizing: content-box;\\n box-sizing: content-box;\\n}\\n\\n.swiper-container-android .swiper-slide,\\n.swiper-wrapper {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n}\\n\\n.swiper-container-multirow > .swiper-wrapper {\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n}\\n\\n.swiper-container-free-mode > .swiper-wrapper {\\n -webkit-transition-timing-function: ease-out;\\n -o-transition-timing-function: ease-out;\\n transition-timing-function: ease-out;\\n margin: 0 auto;\\n}\\n\\n.swiper-slide {\\n -ms-flex-negative: 0;\\n flex-shrink: 0;\\n width: 100%;\\n height: 100%;\\n position: relative;\\n -webkit-transition-property: -webkit-transform;\\n transition-property: -webkit-transform;\\n -o-transition-property: transform;\\n -o-transition-property: -o-transform;\\n transition-property: transform;\\n transition-property: transform, -webkit-transform, -o-transform;\\n transition-property: transform,-webkit-transform;\\n}\\n\\n.swiper-invisible-blank-slide {\\n visibility: hidden;\\n}\\n\\n.swiper-container-autoheight,\\n.swiper-container-autoheight .swiper-slide {\\n height: auto;\\n}\\n\\n.swiper-container-autoheight .swiper-wrapper {\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n -webkit-transition-property: height,-webkit-transform;\\n transition-property: height,-webkit-transform;\\n -o-transition-property: transform,height;\\n -o-transition-property: height,-o-transform;\\n transition-property: transform,height;\\n transition-property: transform,height,-webkit-transform,-o-transform;\\n transition-property: transform,height,-webkit-transform;\\n}\\n\\n.swiper-container-3d {\\n -webkit-perspective: 1200px;\\n perspective: 1200px;\\n}\\n\\n.swiper-container-3d .swiper-cube-shadow,\\n.swiper-container-3d .swiper-slide,\\n.swiper-container-3d .swiper-slide-shadow-bottom,\\n.swiper-container-3d .swiper-slide-shadow-left,\\n.swiper-container-3d .swiper-slide-shadow-right,\\n.swiper-container-3d .swiper-slide-shadow-top,\\n.swiper-container-3d .swiper-wrapper {\\n -webkit-transform-style: preserve-3d;\\n transform-style: preserve-3d;\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-bottom,\\n.swiper-container-3d .swiper-slide-shadow-left,\\n.swiper-container-3d .swiper-slide-shadow-right,\\n.swiper-container-3d .swiper-slide-shadow-top {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n z-index: 10;\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-left {\\n background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-right {\\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-top {\\n background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-bottom {\\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-wp8-horizontal,\\n.swiper-container-wp8-horizontal > .swiper-wrapper {\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n}\\n\\n.swiper-container-wp8-vertical,\\n.swiper-container-wp8-vertical > .swiper-wrapper {\\n -ms-touch-action: pan-x;\\n touch-action: pan-x;\\n}\\n\\n.swiper-button-next,\\n.swiper-button-prev {\\n position: absolute;\\n top: 50%;\\n width: 27px;\\n height: 44px;\\n margin-top: -22px;\\n z-index: 10;\\n cursor: pointer;\\n background-size: 27px 44px;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n.swiper-button-next.swiper-button-disabled,\\n.swiper-button-prev.swiper-button-disabled {\\n opacity: .35;\\n cursor: auto;\\n pointer-events: none;\\n}\\n\\n.swiper-button-prev,\\n.swiper-container-rtl .swiper-button-next {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");\\n left: 10px;\\n right: auto;\\n}\\n\\n.swiper-button-next,\\n.swiper-container-rtl .swiper-button-prev {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");\\n right: 10px;\\n left: auto;\\n}\\n\\n.swiper-button-prev.swiper-button-white,\\n.swiper-container-rtl .swiper-button-next.swiper-button-white {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-next.swiper-button-white,\\n.swiper-container-rtl .swiper-button-prev.swiper-button-white {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-prev.swiper-button-black,\\n.swiper-container-rtl .swiper-button-next.swiper-button-black {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-next.swiper-button-black,\\n.swiper-container-rtl .swiper-button-prev.swiper-button-black {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-lock {\\n display: none;\\n}\\n\\n.swiper-pagination {\\n position: absolute;\\n text-align: center;\\n -webkit-transition: .3s opacity;\\n -o-transition: .3s opacity;\\n transition: .3s opacity;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n z-index: 10;\\n}\\n\\n.swiper-pagination.swiper-pagination-hidden {\\n opacity: 0;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets,\\n.swiper-pagination-custom,\\n.swiper-pagination-fraction {\\n bottom: 10px;\\n left: 0;\\n width: 100%;\\n}\\n\\n.swiper-pagination-bullets-dynamic {\\n overflow: hidden;\\n font-size: 0;\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transform: scale(0.33);\\n -o-transform: scale(0.33);\\n transform: scale(0.33);\\n position: relative;\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\\n -webkit-transform: scale(0.66);\\n -o-transform: scale(0.66);\\n transform: scale(0.66);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\\n -webkit-transform: scale(0.33);\\n -o-transform: scale(0.33);\\n transform: scale(0.33);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\\n -webkit-transform: scale(0.66);\\n -o-transform: scale(0.66);\\n transform: scale(0.66);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\\n -webkit-transform: scale(0.33);\\n -o-transform: scale(0.33);\\n transform: scale(0.33);\\n}\\n\\n.swiper-pagination-bullet {\\n width: 8px;\\n height: 8px;\\n display: inline-block;\\n border-radius: 100%;\\n background: #000;\\n opacity: .2;\\n}\\n\\nbutton.swiper-pagination-bullet {\\n border: none;\\n margin: 0;\\n padding: 0;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n\\n.swiper-pagination-clickable .swiper-pagination-bullet {\\n cursor: pointer;\\n}\\n\\n.swiper-pagination-bullet-active {\\n opacity: 1;\\n background: #007aff;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets {\\n right: 10px;\\n top: 50%;\\n -webkit-transform: translate3d(0, -50%, 0);\\n transform: translate3d(0, -50%, 0);\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 6px 0;\\n display: block;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n -o-transform: translateY(-50%);\\n transform: translateY(-50%);\\n width: 8px;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n display: inline-block;\\n -webkit-transition: .2s top,.2s -webkit-transform;\\n -o-transition: .2s top,.2s -webkit-transform;\\n transition: .2s top,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s top;\\n -webkit-transition: .2s transform,.2s top;\\n transition: .2s transform,.2s top;\\n -webkit-transition: .2s transform,.2s top,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s top,.2s -webkit-transform;\\n transition: .2s transform,.2s top,.2s -webkit-transform;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 0 4px;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n left: 50%;\\n -webkit-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n transform: translateX(-50%);\\n white-space: nowrap;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transition: .2s left,.2s -webkit-transform;\\n -o-transition: .2s left,.2s -webkit-transform;\\n transition: .2s left,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s left;\\n -webkit-transition: .2s transform,.2s left;\\n transition: .2s transform,.2s left;\\n -webkit-transition: .2s transform,.2s left,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s left,.2s -webkit-transform;\\n transition: .2s transform,.2s left,.2s -webkit-transform;\\n}\\n\\n.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transition: .2s right,.2s -webkit-transform;\\n -o-transition: .2s right,.2s -webkit-transform;\\n transition: .2s right,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s right;\\n -webkit-transition: .2s transform,.2s right;\\n transition: .2s transform,.2s right;\\n -webkit-transition: .2s transform,.2s right,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s right,.2s -webkit-transform;\\n transition: .2s transform,.2s right,.2s -webkit-transform;\\n}\\n\\n.swiper-pagination-progressbar {\\n background: rgba(0, 0, 0, 0.25);\\n position: absolute;\\n}\\n\\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n background: #007aff;\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n -webkit-transform: scale(0);\\n -o-transform: scale(0);\\n transform: scale(0);\\n -webkit-transform-origin: left top;\\n -o-transform-origin: left top;\\n transform-origin: left top;\\n}\\n\\n.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n -webkit-transform-origin: right top;\\n -o-transform-origin: right top;\\n transform-origin: right top;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-progressbar {\\n width: 100%;\\n height: 4px;\\n left: 0;\\n top: 0;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-progressbar {\\n width: 4px;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n\\n.swiper-pagination-white .swiper-pagination-bullet-active {\\n background: #fff;\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-white {\\n background: rgba(255, 255, 255, 0.25);\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-white .swiper-pagination-progressbar-fill {\\n background: #fff;\\n}\\n\\n.swiper-pagination-black .swiper-pagination-bullet-active {\\n background: #000;\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-black {\\n background: rgba(0, 0, 0, 0.25);\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-black .swiper-pagination-progressbar-fill {\\n background: #000;\\n}\\n\\n.swiper-pagination-lock {\\n display: none;\\n}\\n\\n.swiper-scrollbar {\\n border-radius: 10px;\\n position: relative;\\n -ms-touch-action: none;\\n background: rgba(0, 0, 0, 0.1);\\n}\\n\\n.swiper-container-horizontal > .swiper-scrollbar {\\n position: absolute;\\n left: 1%;\\n bottom: 3px;\\n z-index: 50;\\n height: 5px;\\n width: 98%;\\n}\\n\\n.swiper-container-vertical > .swiper-scrollbar {\\n position: absolute;\\n right: 3px;\\n top: 1%;\\n z-index: 50;\\n width: 5px;\\n height: 98%;\\n}\\n\\n.swiper-scrollbar-drag {\\n height: 100%;\\n width: 100%;\\n position: relative;\\n background: rgba(0, 0, 0, 0.5);\\n border-radius: 10px;\\n left: 0;\\n top: 0;\\n}\\n\\n.swiper-scrollbar-cursor-drag {\\n cursor: move;\\n}\\n\\n.swiper-scrollbar-lock {\\n display: none;\\n}\\n\\n.swiper-zoom-container {\\n width: 100%;\\n height: 100%;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n text-align: center;\\n}\\n\\n.swiper-zoom-container > canvas,\\n.swiper-zoom-container > img,\\n.swiper-zoom-container > svg {\\n max-width: 100%;\\n max-height: 100%;\\n -o-object-fit: contain;\\n object-fit: contain;\\n}\\n\\n.swiper-slide-zoomed {\\n cursor: move;\\n}\\n\\n.swiper-lazy-preloader {\\n width: 42px;\\n height: 42px;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -21px;\\n margin-top: -21px;\\n z-index: 10;\\n -webkit-transform-origin: 50%;\\n -o-transform-origin: 50%;\\n transform-origin: 50%;\\n -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite;\\n -o-animation: swiper-preloader-spin 1s steps(12, end) infinite;\\n animation: swiper-preloader-spin 1s steps(12, end) infinite;\\n}\\n\\n.swiper-lazy-preloader:after {\\n display: block;\\n content: '';\\n width: 100%;\\n height: 100%;\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\");\\n background-position: 50%;\\n background-size: 100%;\\n background-repeat: no-repeat;\\n}\\n\\n.swiper-lazy-preloader-white:after {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n@-webkit-keyframes swiper-preloader-spin {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@-o-keyframes swiper-preloader-spin {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n -o-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes swiper-preloader-spin {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n -o-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n.swiper-container .swiper-notification {\\n position: absolute;\\n left: 0;\\n top: 0;\\n pointer-events: none;\\n opacity: 0;\\n z-index: -1000;\\n}\\n\\n.swiper-container-fade.swiper-container-free-mode .swiper-slide {\\n -webkit-transition-timing-function: ease-out;\\n -o-transition-timing-function: ease-out;\\n transition-timing-function: ease-out;\\n}\\n\\n.swiper-container-fade .swiper-slide {\\n pointer-events: none;\\n -webkit-transition-property: opacity;\\n -o-transition-property: opacity;\\n transition-property: opacity;\\n}\\n\\n.swiper-container-fade .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n\\n.swiper-container-fade .swiper-slide-active,\\n.swiper-container-fade .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n\\n.swiper-container-cube {\\n overflow: visible;\\n}\\n\\n.swiper-container-cube .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1;\\n visibility: hidden;\\n -webkit-transform-origin: 0 0;\\n -o-transform-origin: 0 0;\\n transform-origin: 0 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.swiper-container-cube .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n\\n.swiper-container-cube.swiper-container-rtl .swiper-slide {\\n -webkit-transform-origin: 100% 0;\\n -o-transform-origin: 100% 0;\\n transform-origin: 100% 0;\\n}\\n\\n.swiper-container-cube .swiper-slide-active,\\n.swiper-container-cube .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n\\n.swiper-container-cube .swiper-slide-active,\\n.swiper-container-cube .swiper-slide-next,\\n.swiper-container-cube .swiper-slide-next + .swiper-slide,\\n.swiper-container-cube .swiper-slide-prev {\\n pointer-events: auto;\\n visibility: visible;\\n}\\n\\n.swiper-container-cube .swiper-slide-shadow-bottom,\\n.swiper-container-cube .swiper-slide-shadow-left,\\n.swiper-container-cube .swiper-slide-shadow-right,\\n.swiper-container-cube .swiper-slide-shadow-top {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n\\n.swiper-container-cube .swiper-cube-shadow {\\n position: absolute;\\n left: 0;\\n bottom: 0;\\n width: 100%;\\n height: 100%;\\n background: #000;\\n opacity: .6;\\n -webkit-filter: blur(50px);\\n filter: blur(50px);\\n z-index: 0;\\n}\\n\\n.swiper-container-flip {\\n overflow: visible;\\n}\\n\\n.swiper-container-flip .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1;\\n}\\n\\n.swiper-container-flip .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n\\n.swiper-container-flip .swiper-slide-active,\\n.swiper-container-flip .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n\\n.swiper-container-flip .swiper-slide-shadow-bottom,\\n.swiper-container-flip .swiper-slide-shadow-left,\\n.swiper-container-flip .swiper-slide-shadow-right,\\n.swiper-container-flip .swiper-slide-shadow-top {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n\\n.swiper-container-coverflow .swiper-wrapper {\\n -ms-perspective: 1200px;\\n}\\n\\n.ss-main {\\n position: relative;\\n display: inline-block;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n color: #666;\\n width: 100%;\\n}\\n\\n.ss-main .ss-single-selected {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n cursor: pointer;\\n width: 100%;\\n height: 30px;\\n padding: 6px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -webkit-transition: background-color .3s;\\n -o-transition: background-color .3s;\\n transition: background-color .3s;\\n}\\n\\n.ss-main .ss-single-selected.ss-disabled {\\n background-color: #dcdee2;\\n cursor: not-allowed;\\n}\\n\\n.ss-main .ss-single-selected.ss-open-above {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n\\n.ss-main .ss-single-selected.ss-open-below {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\\n.ss-main .ss-single-selected .placeholder {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 100%;\\n flex: 1 1 100%;\\n text-align: left;\\n width: calc(100% - 30px);\\n line-height: 1em;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n\\n.ss-main .ss-single-selected .placeholder,\\n.ss-main .ss-single-selected .placeholder * {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n.ss-main .ss-single-selected .placeholder * {\\n width: auto;\\n}\\n\\n.ss-main .ss-single-selected .placeholder .ss-disabled {\\n cursor: pointer;\\n color: #dcdee2;\\n}\\n\\n.ss-main .ss-single-selected .ss-deselect {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: end;\\n -ms-flex-pack: end;\\n justify-content: flex-end;\\n -webkit-box-flex: 0;\\n -ms-flex: 0 1 auto;\\n flex: 0 1 auto;\\n margin: 0 5px;\\n font-weight: 700;\\n font-family: Arial,Helvetica,sans-serif;\\n}\\n\\n.ss-main .ss-single-selected .ss-deselect.ss-hide {\\n display: none;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: end;\\n -ms-flex-pack: end;\\n justify-content: flex-end;\\n -webkit-box-flex: 0;\\n -ms-flex: 0 1 auto;\\n flex: 0 1 auto;\\n margin: 0 5px;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span {\\n border: solid #666;\\n border-width: 0 2px 2px 0;\\n display: inline-block;\\n padding: 3px;\\n -webkit-transition: margin .2s,-webkit-transform .2s;\\n transition: margin .2s,-webkit-transform .2s;\\n -o-transition: margin .2s,-o-transform .2s;\\n transition: transform .2s,margin .2s;\\n transition: transform .2s,margin .2s,-webkit-transform .2s,-o-transform .2s;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-up {\\n -webkit-transform: rotate(-135deg);\\n -o-transform: rotate(-135deg);\\n transform: rotate(-135deg);\\n margin: 3px 0 0;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-down {\\n -webkit-transform: rotate(45deg);\\n -o-transform: rotate(45deg);\\n transform: rotate(45deg);\\n margin: -3px 0 0;\\n}\\n\\n.ss-main .ss-multi-selected {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n cursor: pointer;\\n min-height: 30px;\\n width: 100%;\\n padding: 0 0 0 3px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -webkit-transition: background-color .3s;\\n -o-transition: background-color .3s;\\n transition: background-color .3s;\\n}\\n\\n.ss-main .ss-multi-selected.ss-disabled {\\n background-color: #dcdee2;\\n cursor: not-allowed;\\n}\\n\\n.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled {\\n color: #666;\\n}\\n\\n.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete {\\n cursor: not-allowed;\\n}\\n\\n.ss-main .ss-multi-selected.ss-open-above {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n\\n.ss-main .ss-multi-selected.ss-open-below {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\\n.ss-main .ss-multi-selected .ss-values {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -webkit-box-pack: start;\\n -ms-flex-pack: start;\\n justify-content: flex-start;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 100%;\\n flex: 1 1 100%;\\n width: calc(100% - 30px);\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-disabled {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n padding: 4px 5px;\\n margin: 2px 0;\\n line-height: 1em;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: 100%;\\n color: #dcdee2;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n@-webkit-keyframes scaleIn {\\n 0% {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n opacity: 0;\\n }\\n\\n to {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n\\n@-o-keyframes scaleIn {\\n 0% {\\n -o-transform: scale(0);\\n transform: scale(0);\\n opacity: 0;\\n }\\n\\n to {\\n -o-transform: scale(1);\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n\\n@keyframes scaleIn {\\n 0% {\\n -webkit-transform: scale(0);\\n -o-transform: scale(0);\\n transform: scale(0);\\n opacity: 0;\\n }\\n\\n to {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n\\n@-webkit-keyframes scaleOut {\\n 0% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n opacity: 1;\\n }\\n\\n to {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n opacity: 0;\\n }\\n}\\n\\n@-o-keyframes scaleOut {\\n 0% {\\n -o-transform: scale(1);\\n transform: scale(1);\\n opacity: 1;\\n }\\n\\n to {\\n -o-transform: scale(0);\\n transform: scale(0);\\n opacity: 0;\\n }\\n}\\n\\n@keyframes scaleOut {\\n 0% {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n opacity: 1;\\n }\\n\\n to {\\n -webkit-transform: scale(0);\\n -o-transform: scale(0);\\n transform: scale(0);\\n opacity: 0;\\n }\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n font-size: 12px;\\n padding: 3px 5px;\\n margin: 3px 5px 3px 0;\\n color: #fff;\\n background-color: #5897fb;\\n border-radius: 4px;\\n -webkit-animation-name: scaleIn;\\n -o-animation-name: scaleIn;\\n animation-name: scaleIn;\\n -webkit-animation-duration: .2s;\\n -o-animation-duration: .2s;\\n animation-duration: .2s;\\n -webkit-animation-timing-function: ease-out;\\n -o-animation-timing-function: ease-out;\\n animation-timing-function: ease-out;\\n -webkit-animation-fill-mode: both;\\n -o-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value.ss-out {\\n -webkit-animation-name: scaleOut;\\n -o-animation-name: scaleOut;\\n animation-name: scaleOut;\\n -webkit-animation-duration: .2s;\\n -o-animation-duration: .2s;\\n animation-duration: .2s;\\n -webkit-animation-timing-function: ease-out;\\n -o-animation-timing-function: ease-out;\\n animation-timing-function: ease-out;\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete {\\n margin: 0 0 0 5px;\\n cursor: pointer;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 0;\\n -ms-flex: 0 1 3px;\\n flex: 0 1 3px;\\n margin: 9px 12px 0 5px;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n background: #666;\\n position: relative;\\n height: 10px;\\n width: 2px;\\n -webkit-transition: -webkit-transform .2s;\\n transition: -webkit-transform .2s;\\n -o-transition: -o-transform .2s;\\n transition: transform .2s;\\n transition: transform .2s, -webkit-transform .2s, -o-transform .2s;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus:after {\\n background: #666;\\n content: \\\"\\\";\\n position: absolute;\\n height: 2px;\\n width: 10px;\\n left: -4px;\\n top: 4px;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross {\\n -webkit-transform: rotate(45deg);\\n -o-transform: rotate(45deg);\\n transform: rotate(45deg);\\n}\\n\\n.ss-main .ss-content {\\n position: absolute;\\n width: 100%;\\n margin: -1px 0 0;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #dcdee2;\\n z-index: 1010;\\n background-color: #fff;\\n -webkit-transform-origin: center top;\\n -o-transform-origin: center top;\\n transform-origin: center top;\\n -webkit-transition: opacity .2s,-webkit-transform .2s;\\n transition: opacity .2s,-webkit-transform .2s;\\n -o-transition: opacity .2s,-o-transform .2s;\\n transition: transform .2s,opacity .2s;\\n transition: transform .2s,opacity .2s,-webkit-transform .2s,-o-transform .2s;\\n opacity: 0;\\n -webkit-transform: scaleY(0);\\n -o-transform: scaleY(0);\\n transform: scaleY(0);\\n}\\n\\n.ss-main .ss-content.ss-open {\\n display: block;\\n opacity: 1;\\n -webkit-transform: scaleY(1);\\n -o-transform: scaleY(1);\\n transform: scaleY(1);\\n}\\n\\n.ss-main .ss-content .ss-search {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n padding: 8px 10px;\\n}\\n\\n.ss-main .ss-content .ss-search.ss-hide,\\n.ss-main .ss-content .ss-search.ss-hide input {\\n height: 0;\\n opacity: 0;\\n padding: 0;\\n margin: 0;\\n}\\n\\n.ss-main .ss-content .ss-search input {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n width: 100%;\\n min-width: 0;\\n height: 30px;\\n padding: 5px 10px;\\n margin: 0;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n text-align: left;\\n box-sizing: border-box;\\n -webkit-box-sizing: border-box;\\n -webkit-appearance: textfield;\\n}\\n\\n.ss-main .ss-content .ss-search input::-webkit-input-placeholder {\\n color: #b3b3b3;\\n}\\n\\n.ss-main .ss-content .ss-search input:-ms-input-placeholder {\\n color: #b3b3b3;\\n}\\n\\n.ss-main .ss-content .ss-search input::-ms-input-placeholder {\\n color: #b3b3b3;\\n}\\n\\n.ss-main .ss-content .ss-search input::placeholder {\\n color: #b3b3b3;\\n}\\n\\n.ss-main .ss-content .ss-search input:focus {\\n -webkit-box-shadow: 0 0 5px #5897fb;\\n box-shadow: 0 0 5px #5897fb;\\n}\\n\\n.ss-main .ss-content .ss-search .ss-addable {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n cursor: pointer;\\n font-size: 22px;\\n font-weight: 700;\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 30px;\\n flex: 0 0 30px;\\n height: 30px;\\n margin: 0 0 0 8px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n\\n.ss-main .ss-content .ss-addable {\\n padding-top: 0;\\n}\\n\\n.ss-main .ss-content .ss-list {\\n max-height: 200px;\\n overflow-x: hidden;\\n overflow-y: auto;\\n text-align: left;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-optgroup .ss-optgroup-label {\\n padding: 6px 10px;\\n font-weight: 700;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-optgroup .ss-option {\\n padding: 6px 6px 6px 25px;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option {\\n padding: 6px 10px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option * {\\n display: inline-block;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-highlighted,\\n.ss-main .ss-content .ss-list .ss-option:hover {\\n color: #fff;\\n background-color: #5897fb;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-disabled {\\n cursor: default;\\n color: #dcdee2;\\n background-color: #fff;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-hide {\\n display: none;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option .ss-search-highlight {\\n background-color: #fff70062;\\n}\\n\\n/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */\\n\\n/* Document\\n ========================================================================== */\\n\\n/**\\n * 1. Correct the line height in all browsers.\\n * 2. Prevent adjustments of font size after orientation changes in iOS.\\n */\\n\\nhtml {\\n line-height: 1.15;\\n /* 1 */\\n -webkit-text-size-adjust: 100%;\\n /* 2 */\\n}\\n\\n/* Sections\\n ========================================================================== */\\n\\n/**\\n * Remove the margin in all browsers.\\n */\\n\\nbody {\\n margin: 0;\\n}\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\n\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n}\\n\\n/* Grouping content\\n ========================================================================== */\\n\\n/**\\n * 1. Add the correct box sizing in Firefox.\\n * 2. Show the overflow in Edge and IE.\\n */\\n\\nhr {\\n -webkit-box-sizing: content-box;\\n box-sizing: content-box;\\n /* 1 */\\n height: 0;\\n /* 1 */\\n overflow: visible;\\n /* 2 */\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\npre {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */\\n}\\n\\n/* Text-level semantics\\n ========================================================================== */\\n\\n/**\\n * Remove the gray background on active links in IE 10.\\n */\\n\\na {\\n background-color: transparent;\\n}\\n\\n/**\\n * 1. Remove the bottom border in Chrome 57-\\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n */\\n\\nabbr[title] {\\n border-bottom: none;\\n /* 1 */\\n text-decoration: underline;\\n /* 2 */\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n /* 2 */\\n}\\n\\n/**\\n * Add the correct font weight in Chrome, Edge, and Safari.\\n */\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\ncode,\\nkbd,\\nsamp {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */\\n}\\n\\n/**\\n * Add the correct font size in all browsers.\\n */\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/**\\n * Prevent `sub` and `sup` elements from affecting the line height in\\n * all browsers.\\n */\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\n/* Embedded content\\n ========================================================================== */\\n\\n/**\\n * Remove the border on images inside links in IE 10.\\n */\\n\\nimg {\\n border-style: none;\\n}\\n\\n/* Forms\\n ========================================================================== */\\n\\n/**\\n * 1. Change the font styles in all browsers.\\n * 2. Remove the margin in Firefox and Safari.\\n */\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit;\\n /* 1 */\\n font-size: 100%;\\n /* 1 */\\n line-height: 1.15;\\n /* 1 */\\n margin: 0;\\n /* 2 */\\n}\\n\\n/**\\n * Show the overflow in IE.\\n * 1. Show the overflow in Edge.\\n */\\n\\nbutton,\\ninput {\\n /* 1 */\\n overflow: visible;\\n}\\n\\n/**\\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\\n * 1. Remove the inheritance of text transform in Firefox.\\n */\\n\\nbutton,\\nselect {\\n /* 1 */\\n text-transform: none;\\n}\\n\\n/**\\n * Correct the inability to style clickable types in iOS and Safari.\\n */\\n\\nbutton,\\n[type=\\\"button\\\"],\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n -webkit-appearance: button;\\n}\\n\\n/**\\n * Remove the inner border and padding in Firefox.\\n */\\n\\nbutton::-moz-focus-inner,\\n[type=\\\"button\\\"]::-moz-focus-inner,\\n[type=\\\"reset\\\"]::-moz-focus-inner,\\n[type=\\\"submit\\\"]::-moz-focus-inner {\\n border-style: none;\\n padding: 0;\\n}\\n\\n/**\\n * Restore the focus styles unset by the previous rule.\\n */\\n\\nbutton:-moz-focusring,\\n[type=\\\"button\\\"]:-moz-focusring,\\n[type=\\\"reset\\\"]:-moz-focusring,\\n[type=\\\"submit\\\"]:-moz-focusring {\\n outline: 1px dotted ButtonText;\\n}\\n\\n/**\\n * Correct the padding in Firefox.\\n */\\n\\nfieldset {\\n padding: 0.35em 0.75em 0.625em;\\n}\\n\\n/**\\n * 1. Correct the text wrapping in Edge and IE.\\n * 2. Correct the color inheritance from `fieldset` elements in IE.\\n * 3. Remove the padding so developers are not caught out when they zero out\\n * `fieldset` elements in all browsers.\\n */\\n\\nlegend {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n /* 1 */\\n color: inherit;\\n /* 2 */\\n display: table;\\n /* 1 */\\n max-width: 100%;\\n /* 1 */\\n padding: 0;\\n /* 3 */\\n white-space: normal;\\n /* 1 */\\n}\\n\\n/**\\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n */\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n/**\\n * Remove the default vertical scrollbar in IE 10+.\\n */\\n\\ntextarea {\\n overflow: auto;\\n}\\n\\n/**\\n * 1. Add the correct box sizing in IE 10.\\n * 2. Remove the padding in IE 10.\\n */\\n\\n[type=\\\"checkbox\\\"],\\n[type=\\\"radio\\\"] {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n /* 1 */\\n padding: 0;\\n /* 2 */\\n}\\n\\n/**\\n * Correct the cursor style of increment and decrement buttons in Chrome.\\n */\\n\\n[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/**\\n * 1. Correct the odd appearance in Chrome and Safari.\\n * 2. Correct the outline style in Safari.\\n */\\n\\n[type=\\\"search\\\"] {\\n -webkit-appearance: textfield;\\n /* 1 */\\n outline-offset: -2px;\\n /* 2 */\\n}\\n\\n/**\\n * Remove the inner padding in Chrome and Safari on macOS.\\n */\\n\\n[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/**\\n * 1. Correct the inability to style clickable types in iOS and Safari.\\n * 2. Change font properties to `inherit` in Safari.\\n */\\n\\n::-webkit-file-upload-button {\\n -webkit-appearance: button;\\n /* 1 */\\n font: inherit;\\n /* 2 */\\n}\\n\\n/* Interactive\\n ========================================================================== */\\n\\n/*\\n * Add the correct display in Edge, IE 10+, and Firefox.\\n */\\n\\ndetails {\\n display: block;\\n}\\n\\n/*\\n * Add the correct display in all browsers.\\n */\\n\\nsummary {\\n display: list-item;\\n}\\n\\n/* Misc\\n ========================================================================== */\\n\\n/**\\n * Add the correct display in IE 10+.\\n */\\n\\ntemplate {\\n display: none;\\n}\\n\\n/**\\n * Add the correct display in IE 10.\\n */\\n\\n[hidden] {\\n display: none;\\n}\\n\\n/* ==========================================================================\\n #RESET\\n ========================================================================== */\\n\\n/**\\n * A very simple reset that sits on top of Normalize.css.\\n */\\n\\nbody,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nblockquote,\\np,\\npre,\\ndl,\\ndd,\\nol,\\nul,\\nfigure,\\nhr,\\nfieldset,\\nlegend {\\n margin: 0;\\n padding: 0;\\n}\\n\\n/**\\n * Remove trailing margins from nested lists.\\n */\\n\\nli > ol,\\nli > ul {\\n margin-bottom: 0;\\n}\\n\\n/**\\n * Remove default table spacing.\\n */\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\n/**\\n * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;`\\n * on fieldsets.\\n */\\n\\nfieldset {\\n min-width: 0;\\n /* [1] */\\n border: 0;\\n}\\n\\n/* ==========================================================================\\n #SHARED\\n ========================================================================== */\\n\\n/**\\n * Shared declarations for certain elements.\\n */\\n\\naddress,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nblockquote,\\npre,\\ndl,\\nol,\\nul,\\nhr,\\ntable,\\nfieldset {\\n margin-bottom: 2rem;\\n}\\n\\naddress:last-child,\\nh1:last-child,\\nh2:last-child,\\nh3:last-child,\\nh4:last-child,\\nh5:last-child,\\nh6:last-child,\\nblockquote:last-child,\\npre:last-child,\\ndl:last-child,\\nol:last-child,\\nul:last-child,\\nhr:last-child,\\ntable:last-child,\\nfieldset:last-child {\\n margin-bottom: 0;\\n}\\n\\n/**\\n * Consistent indentation for lists.\\n */\\n\\ndd,\\nol,\\nul {\\n margin-left: 2rem;\\n}\\n\\n/* ==========================================================================\\n #PRINT\\n ========================================================================== */\\n\\n/**\\n * Very crude, reset-like styles taken from the HTML5 Boilerplate:\\n * https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/css.md#print-styles\\n * https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L205-L282\\n */\\n\\n@media print {\\n /**\\n * 1. Black prints faster: http://www.sanbeiji.com/archives/953\\n */\\n\\n *,\\n *::before,\\n *::after {\\n background: transparent !important;\\n color: #000 !important;\\n /* [1] */\\n -webkit-box-shadow: none !important;\\n box-shadow: none !important;\\n text-shadow: none !important;\\n }\\n\\n a,\\n a:visited {\\n text-decoration: underline;\\n }\\n\\n a[href]::after {\\n content: \\\" (\\\" attr(href) \\\")\\\";\\n }\\n\\n abbr[title]::after {\\n content: \\\" (\\\" attr(title) \\\")\\\";\\n }\\n\\n /**\\n * Don’t show links that are fragment identifiers, or use the `javascript:`\\n * pseudo protocol.\\n */\\n\\n a[href^=\\\"#\\\"]::after,\\n a[href^=\\\"javascript:\\\"]::after {\\n content: \\\"\\\";\\n }\\n\\n pre,\\n blockquote {\\n border: 1px solid #999;\\n page-break-inside: avoid;\\n }\\n\\n /**\\n * Printing Tables: http://css-discuss.incutio.com/wiki/Printing_Tables\\n */\\n\\n thead {\\n display: table-header-group;\\n }\\n\\n tr,\\n img {\\n page-break-inside: avoid;\\n }\\n\\n img {\\n max-width: 100% !important;\\n }\\n\\n p,\\n h2,\\n h3 {\\n orphans: 3;\\n widows: 3;\\n }\\n\\n h2,\\n h3 {\\n page-break-after: avoid;\\n }\\n}\\n\\n/* ==========================================================================\\n #BLOCK\\n ========================================================================== */\\n\\n/**\\n * Stacked image-with-text object. A simple abstraction to cover a very commonly\\n * occurring design pattern.\\n */\\n\\n/* ==========================================================================\\n #BOX\\n ========================================================================== */\\n\\n/**\\n * The box object simply boxes off content. Extend with cosmetic styles in the\\n * Components layer.\\n */\\n\\n/* ==========================================================================\\n #LIST\\n ========================================================================== */\\n\\n/**\\n * Strip list-like appearance from lists by removing their bullets and any\\n * indentation.\\n */\\n\\n/**\\n * The list-inline object simply displays a list of items in one line.\\n */\\n\\nblockquote {\\n border-left: #979797 5px solid;\\n padding-left: 1.5rem;\\n}\\n\\ninput[type='tel'],\\ninput[type='text'],\\ninput[type='email'],\\ninput[type='number'],\\ninput[type='search'],\\ntextarea,\\nselect {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n background-color: #fff;\\n border: 0;\\n border-bottom: #e6e6e6 4px solid;\\n border-radius: 0;\\n color: #181d25;\\n display: block;\\n padding: 0.5rem 0rem;\\n font-size: 1rem;\\n line-height: 1.5;\\n -webkit-transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n resize: none;\\n outline: 0;\\n width: 100%;\\n}\\n\\ninput[type='tel']:hover,\\ninput[type='tel']:focus,\\ninput[type='text']:hover,\\ninput[type='text']:focus,\\ninput[type='email']:hover,\\ninput[type='email']:focus,\\ninput[type='number']:hover,\\ninput[type='number']:focus,\\ninput[type='search']:hover,\\ninput[type='search']:focus,\\ntextarea:hover,\\ntextarea:focus,\\nselect:hover,\\nselect:focus {\\n border-color: #3fd8b6;\\n}\\n\\ninput[type='tel']::-webkit-input-placeholder,\\ninput[type='text']::-webkit-input-placeholder,\\ninput[type='email']::-webkit-input-placeholder,\\ninput[type='number']::-webkit-input-placeholder,\\ninput[type='search']::-webkit-input-placeholder,\\ntextarea::-webkit-input-placeholder,\\nselect::-webkit-input-placeholder {\\n color: #979797;\\n}\\n\\ninput[type='tel']:-ms-input-placeholder,\\ninput[type='text']:-ms-input-placeholder,\\ninput[type='email']:-ms-input-placeholder,\\ninput[type='number']:-ms-input-placeholder,\\ninput[type='search']:-ms-input-placeholder,\\ntextarea:-ms-input-placeholder,\\nselect:-ms-input-placeholder {\\n color: #979797;\\n}\\n\\ninput[type='tel']::-ms-input-placeholder,\\ninput[type='text']::-ms-input-placeholder,\\ninput[type='email']::-ms-input-placeholder,\\ninput[type='number']::-ms-input-placeholder,\\ninput[type='search']::-ms-input-placeholder,\\ntextarea::-ms-input-placeholder,\\nselect::-ms-input-placeholder {\\n color: #979797;\\n}\\n\\ninput[type='tel']::placeholder,\\ninput[type='text']::placeholder,\\ninput[type='email']::placeholder,\\ninput[type='number']::placeholder,\\ninput[type='search']::placeholder,\\ntextarea::placeholder,\\nselect::placeholder {\\n color: #979797;\\n}\\n\\ninput[type='checkbox'] {\\n display: block;\\n margin-top: -0.25rem;\\n position: relative;\\n visibility: hidden;\\n height: 1.125rem;\\n width: 1.125rem;\\n}\\n\\ninput[type='checkbox']::after {\\n content: '';\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: 1.125rem;\\n border: #000 2px solid;\\n visibility: visible;\\n position: absolute;\\n -webkit-transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: 0.125rem;\\n}\\n\\ninput[type='checkbox']:checked::after {\\n background-color: #000;\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8;base64,PHN2ZyBpZD0iaWNvbi1jaGVjayIgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIvPg0KPC9zdmc+\\\");\\n}\\n\\ninput[type='checkbox']:checked:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\ninput[type='checkbox'] + label {\\n padding-left: 0.5rem;\\n -webkit-transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\ninput[type='checkbox']:hover::after {\\n border-color: #3fd8b6;\\n}\\n\\ninput[type='checkbox']:hover + label {\\n color: #3fd8b6;\\n}\\n\\ninput[type='radio'] {\\n display: block;\\n margin-top: -0.25rem;\\n position: relative;\\n visibility: hidden;\\n height: 1.125rem;\\n width: 1.125rem;\\n}\\n\\ninput[type='radio']::after {\\n content: '';\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: 1.125rem;\\n border: #000 2px solid;\\n visibility: visible;\\n position: absolute;\\n -webkit-transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: 100%;\\n}\\n\\ninput[type='radio']::before {\\n content: '';\\n background-color: #000;\\n border-radius: 100%;\\n display: block;\\n visibility: visible;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n opacity: 0;\\n -webkit-transform: translate(-50%, -50%) scale(0.01);\\n -o-transform: translate(-50%, -50%) scale(0.01);\\n transform: translate(-50%, -50%) scale(0.01);\\n -webkit-transition: background-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), opacity 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), opacity 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: background-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), opacity 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -o-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), opacity 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), opacity 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -o-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n height: 0.5rem;\\n width: 0.5rem;\\n z-index: 1;\\n}\\n\\ninput[type='radio']:checked::before {\\n opacity: 1;\\n -webkit-transform: translate(-50%, -50%);\\n -o-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n}\\n\\ninput[type='radio'] + label {\\n padding-left: 0.5rem;\\n -webkit-transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\ninput[type='radio']:hover::after {\\n border-color: #3fd8b6;\\n}\\n\\ninput[type='radio']:hover::before {\\n background-color: #3fd8b6;\\n}\\n\\ninput[type='radio']:hover + label {\\n color: #3fd8b6;\\n}\\n\\n/* ==========================================================================\\n #IMAGES\\n ========================================================================== */\\n\\n/**\\n * 1. Fluid images for responsive purposes.\\n * 2. Offset `alt` text from surrounding copy.\\n * 3. Setting `vertical-align` removes the whitespace that appears under `img`\\n * elements when they are dropped into a page as-is. Safer alternative to\\n * using `display: block;`.\\n */\\n\\npicture {\\n display: block;\\n}\\n\\nimg {\\n height: auto;\\n /* [1] */\\n max-width: 100%;\\n /* [1] */\\n font-style: italic;\\n /* [2] */\\n vertical-align: middle;\\n /* [3] */\\n}\\n\\n/* ==========================================================================\\n #PAGE\\n ========================================================================== */\\n\\nhtml {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow-y: scroll;\\n min-height: 100%;\\n}\\n\\nhtml *,\\nhtml *::before,\\nhtml *::after {\\n -webkit-box-sizing: inherit;\\n box-sizing: inherit;\\n}\\n\\nbody {\\n overflow: hidden;\\n}\\n\\narticle {\\n position: relative;\\n}\\n\\n/* ==========================================================================\\n #TABLES\\n ========================================================================== */\\n\\n/**\\n * 1. Ensure tables fill up as much space as possible.\\n */\\n\\ntable {\\n width: 100%;\\n /* [1] */\\n}\\n\\nhtml {\\n color: #181d25;\\n line-height: 1.75;\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1rem;\\n font-weight: 400;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n@media (min-width: 1801px) {\\n html {\\n font-size: 1.125rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n body {\\n font-size: 1.125rem;\\n }\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\np,\\nul,\\nol,\\nspan {\\n -webkit-font-variant-ligatures: common-ligatures;\\n font-variant-ligatures: common-ligatures;\\n -webkit-font-feature-settings: 'liga', 'clig';\\n font-feature-settings: 'liga', 'clig';\\n}\\n\\nh1:first-child,\\nh2:first-child,\\nh3:first-child,\\nh4:first-child,\\nh5:first-child,\\nh6:first-child,\\np:first-child,\\nul:first-child,\\nol:first-child,\\nspan:first-child {\\n margin-top: 0;\\n}\\n\\nh1:last-child,\\nh2:last-child,\\nh3:last-child,\\nh4:last-child,\\nh5:last-child,\\nh6:last-child,\\np:last-child,\\nul:last-child,\\nol:last-child,\\nspan:last-child {\\n margin-bottom: 0;\\n}\\n\\nh1 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 2rem;\\n font-weight: 400;\\n line-height: 1.05;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n h1 {\\n font-size: 2.75rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n h1 {\\n font-size: 3.5rem;\\n }\\n}\\n\\nh2 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.75rem;\\n font-weight: 400;\\n line-height: 1.05;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n h2 {\\n font-size: 2.125rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n h2 {\\n font-size: 2.5rem;\\n }\\n}\\n\\nh3 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 300;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n h3 {\\n font-size: 1.75rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n h3 {\\n font-size: 2rem;\\n }\\n}\\n\\nh4 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n h4 {\\n font-size: 1.5rem;\\n }\\n}\\n\\nh5 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n h5 {\\n font-size: 1.25rem;\\n }\\n}\\n\\nh6 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1rem;\\n font-weight: 400;\\n letter-spacing: 0.0625rem;\\n line-height: 1.25;\\n text-transform: uppercase;\\n margin-bottom: 1.5rem;\\n}\\n\\np {\\n margin: 2rem 0rem;\\n}\\n\\na {\\n color: #3fd8b6;\\n text-decoration: none;\\n -webkit-transition: color 0.4s ease;\\n -o-transition: color 0.4s ease;\\n transition: color 0.4s ease;\\n}\\n\\na:hover {\\n color: #2bd3ad;\\n}\\n\\na:active {\\n color: #26be9c;\\n}\\n\\n.accordion {\\n text-align: left;\\n}\\n\\n.accordion__item {\\n border-top: #979797 2px solid;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n padding: 1.5rem 0rem;\\n display: block;\\n}\\n\\n.accordion__item__inner {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-flex: 1;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\\n.accordion__header {\\n cursor: pointer;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n width: 100%;\\n}\\n\\n.accordion__header__toggle {\\n -ms-flex-negative: 0;\\n flex-shrink: 0;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-left: 0.5rem;\\n -webkit-transform: scaleY(-1);\\n -o-transform: scaleY(-1);\\n transform: scaleY(-1);\\n -webkit-transition: -webkit-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transition: -webkit-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n -o-transition: -o-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -webkit-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -o-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n}\\n\\n.accordion__item.is-active .accordion__header__toggle {\\n -webkit-transform: scaleY(1);\\n -o-transform: scaleY(1);\\n transform: scaleY(1);\\n}\\n\\n.accordion__header__toggle .icon {\\n max-height: 100%;\\n max-width: 100%;\\n}\\n\\n.accordion__heading {\\n margin-bottom: 0;\\n}\\n\\n.accordion__content {\\n display: none;\\n overflow: hidden;\\n padding: 0.5rem 0rem 0rem;\\n -webkit-transform: scale(0.9);\\n -o-transform: scale(0.9);\\n transform: scale(0.9);\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: -webkit-transform 0.3s ease;\\n -o-transition: -o-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n transition: transform 0.3s ease, -webkit-transform 0.3s ease, -o-transform 0.3s ease;\\n will-change: transform;\\n}\\n\\n.accordion__item.is-active .accordion__content {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n}\\n\\n.archive__featured {\\n padding-top: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .archive__featured {\\n padding-top: 5rem;\\n }\\n}\\n\\n.archive__list {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n padding-top: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .archive__list {\\n -webkit-box-pack: start;\\n -ms-flex-pack: start;\\n justify-content: flex-start;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .archive__list {\\n padding-top: 5rem;\\n }\\n}\\n\\n.index-data .filter {\\n padding-top: 2rem;\\n}\\n\\n@media (max-width: 600px) {\\n .index-data .filter {\\n margin: 0 2rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .index-data .filter {\\n padding-top: 2.5rem;\\n }\\n}\\n\\n.bg-img {\\n background-position: 50%;\\n background-repeat: no-repeat;\\n background-size: cover;\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 0;\\n}\\n\\n.image-banner {\\n overflow: hidden;\\n min-height: 20rem;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) {\\n .image-banner {\\n min-height: 30rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .image-banner {\\n min-height: 40rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .image-banner {\\n min-height: 50rem;\\n }\\n}\\n\\n.image-banner picture,\\n.image-banner img {\\n width: 100%;\\n}\\n\\n.image-banner picture::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n -webkit-transition: all 0.3s ease-in-out;\\n -o-transition: all 0.3s ease-in-out;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.image-banner .banner__image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.image-banner .banner__image .media {\\n padding-bottom: 0;\\n height: 100%;\\n}\\n\\n.image-banner .component__inner {\\n color: #fff;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n position: relative;\\n}\\n\\n.button,\\n[type=button],\\n[type=reset],\\n[type=submit] {\\n background-color: #3fd8b6;\\n color: #fff;\\n display: inline-block;\\n font-weight: 700;\\n line-height: 1.125;\\n padding: 1rem 3rem;\\n text-decoration: none;\\n -webkit-transition: all 0.4s ease;\\n -o-transition: all 0.4s ease;\\n transition: all 0.4s ease;\\n min-width: 12.5rem;\\n text-align: center;\\n}\\n\\n.button:hover,\\n[type=button]:hover,\\n[type=reset]:hover,\\n[type=submit]:hover {\\n background-color: #2bd3ad;\\n color: #fff;\\n}\\n\\n.button:active,\\n[type=button]:active,\\n[type=reset]:active,\\n[type=submit]:active {\\n background-color: #26be9c;\\n color: #fff;\\n}\\n\\n.button.button--text,\\n[type=button].button--text,\\n[type=reset].button--text,\\n[type=submit].button--text {\\n background-color: transparent;\\n border: 0;\\n border-radius: 0;\\n color: #3fd8b6;\\n padding: 0;\\n outline: none !important;\\n}\\n\\n.button.button--text:hover,\\n[type=button].button--text:hover,\\n[type=reset].button--text:hover,\\n[type=submit].button--text:hover {\\n background-color: transparent;\\n color: #2bd3ad;\\n}\\n\\n.button.button--text:active,\\n[type=button].button--text:active,\\n[type=reset].button--text:active,\\n[type=submit].button--text:active {\\n background-color: transparent;\\n color: #26be9c;\\n}\\n\\n.links {\\n margin-top: 3.5rem;\\n}\\n\\n.links:first-child {\\n margin-top: 0;\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block .columns {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n }\\n}\\n\\n.columns-block .columns.left-borders .column {\\n border-left: 4px solid #3fd8b6;\\n padding-left: 2rem;\\n}\\n\\n.columns-block .column {\\n -ms-flex-negative: 0;\\n flex-shrink: 0;\\n -webkit-box-flex: 0;\\n -ms-flex-positive: 0;\\n flex-grow: 0;\\n margin-bottom: 2rem;\\n text-align: left;\\n width: 100%;\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block .column {\\n margin-bottom: 4rem;\\n }\\n}\\n\\n.columns-block .column__icon {\\n line-height: 0;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block .column {\\n margin-right: 2rem;\\n }\\n}\\n\\n.columns-block .column .heading,\\n.columns-block .column__number {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block .column .heading,\\n .columns-block .column__number {\\n font-size: 1.5rem;\\n }\\n}\\n\\n.columns-block .column .heading {\\n margin-bottom: 0;\\n}\\n\\n.columns-block .column .heading + p {\\n margin-top: 2rem;\\n}\\n\\n.columns-block[data-columns-per-row=\\\"two\\\"] .column {\\n -ms-flex-preferred-size: calc(50% - 1rem);\\n flex-basis: calc(50% - 1rem);\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"two\\\"] .column:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"two\\\"] .column {\\n -ms-flex-preferred-size: calc(50% - 2rem);\\n flex-basis: calc(50% - 2rem);\\n margin-right: 4rem;\\n }\\n}\\n\\n.columns-block[data-columns-per-row=\\\"three\\\"] .column {\\n -ms-flex-preferred-size: calc(33.33333% - 1.33333rem);\\n flex-basis: calc(33.33333% - 1.33333rem);\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"three\\\"] .column:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"three\\\"] .column {\\n -ms-flex-preferred-size: calc(33.33333% - 4rem);\\n flex-basis: calc(33.33333% - 4rem);\\n margin-right: 6rem;\\n }\\n}\\n\\n.columns-block[data-columns-per-row=\\\"four\\\"] .column {\\n -ms-flex-preferred-size: calc(50% - 1rem);\\n flex-basis: calc(50% - 1rem);\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column {\\n -ms-flex-preferred-size: calc(25% - 2rem);\\n flex-basis: calc(25% - 2rem);\\n }\\n\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(2n) {\\n margin-right: 2rem;\\n }\\n\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(4n) {\\n margin-right: 0;\\n }\\n}\\n\\n.columns-block.u-text-align--center .columns {\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n.columns-block.u-text-align--center .columns .column {\\n text-align: center;\\n}\\n\\n.columns-block.u-text-align--right .columns {\\n -webkit-box-pack: end;\\n -ms-flex-pack: end;\\n justify-content: flex-end;\\n}\\n\\n.columns-block.u-text-align--right .columns .column {\\n text-align: right;\\n}\\n\\n.company__name {\\n margin-bottom: 1rem;\\n}\\n\\n.company__tagline {\\n max-width: 40rem;\\n}\\n\\n.component {\\n position: relative;\\n}\\n\\n.component .bg-img {\\n z-index: -1;\\n}\\n\\n.component__inner {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .component__inner {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .component__inner {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.component__inner > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.slider .component__inner {\\n padding-right: 0;\\n padding-left: 0;\\n}\\n\\n.gallery .component__inner {\\n padding-right: 0;\\n padding-bottom: 0;\\n padding-left: 0;\\n}\\n\\n.component__content {\\n margin: 0 auto;\\n max-width: 40rem;\\n}\\n\\n.component__intro > *:last-child {\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n .component__intro > *:last-child {\\n margin-bottom: 5rem;\\n }\\n}\\n\\n.component.u-background-color--light {\\n background-color: #fff;\\n}\\n\\n.component.u-background-color--dark {\\n background-color: #f9f9fa;\\n}\\n\\n.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner,\\n.component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .component__inner,\\n.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .featured-blocks__inner,\\n.component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .featured-blocks__inner,\\n.component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .contact-info__content,\\n.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .contact-info__content {\\n padding-top: 0;\\n}\\n\\n@media (max-width: 600px) {\\n .component.u-background-color--light.image-banner + .component.u-background-color--light.u-padding-collapse .component__inner,\\n .component.u-background-color--dark.image-banner + .component.u-background-color--dark.u-padding-collapse .component__inner,\\n .component.component.u-background-color--light.u-padding-collapse + .u-background-color--light.tiles .component__inner,\\n .component.component.u-background-color--dark.u-padding-collapse + .u-background-color--dark.tiles .component__inner {\\n padding-top: 0;\\n }\\n}\\n\\n.component.columns-block.u-text-align--center .component__content,\\n.component.featured-blocks.u-text-align--center .component__content,\\n.component.featured-posts.u-text-align--center .component__content,\\n.component.gallery.u-text-align--center .component__content,\\n.component.video.u-text-align--center .component__content,\\n.component.table.u-text-align--center .component__content,\\n.component.team.u-text-align--center .component__content,\\n.component.slider.u-text-align--center .component__content {\\n text-align: center;\\n}\\n\\n.component.columns-block.u-text-align--left .component__content,\\n.component.featured-blocks.u-text-align--left .component__content,\\n.component.featured-posts.u-text-align--left .component__content,\\n.component.gallery.u-text-align--left .component__content,\\n.component.video.u-text-align--left .component__content,\\n.component.table.u-text-align--left .component__content,\\n.component.team.u-text-align--left .component__content,\\n.component.slider.u-text-align--left .component__content {\\n margin-left: 0;\\n}\\n\\n.component.columns-block.u-text-align--right .component__content,\\n.component.featured-blocks.u-text-align--right .component__content,\\n.component.featured-posts.u-text-align--right .component__content,\\n.component.gallery.u-text-align--right .component__content,\\n.component.video.u-text-align--right .component__content,\\n.component.table.u-text-align--right .component__content,\\n.component.team.u-text-align--right .component__content,\\n.component.slider.u-text-align--right .component__content {\\n margin-right: 0;\\n text-align: right;\\n}\\n\\n.component.has-background-image__inner {\\n position: relative;\\n z-index: 1;\\n}\\n\\n.component.u-background-color--light + .component.gallery.u-background-color--light,\\n.component.u-background-color--dark + .component.gallery.u-background-color--dark,\\n.component.u-background-color--light + .component.slider.u-background-color--light,\\n.component.u-background-color--dark + .component.slider.u-background-color--dark {\\n padding-top: 0;\\n}\\n\\n.component.gallery.u-background-color--light + .component.u-background-color--light,\\n.component.gallery.u-background-color--dark + .component.u-background-color--dark {\\n margin-top: -0.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .component.gallery.u-background-color--light + .component.u-background-color--light,\\n .component.gallery.u-background-color--dark + .component.u-background-color--dark {\\n margin-top: -0.75rem;\\n }\\n}\\n\\n.u-background-color--light {\\n background-color: #fff;\\n}\\n\\n.u-background-color--dark {\\n background-color: #f9f9fa;\\n}\\n\\n@media (min-width: 601px) {\\n .contact {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .contact__column {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 50%;\\n flex: 0 0 50%;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .contact__column {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 100%;\\n flex: 0 0 100%;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .contact__column {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 50%;\\n flex: 0 0 50%;\\n }\\n}\\n\\n.contact__row {\\n margin-bottom: 2rem;\\n}\\n\\n.contact__address,\\n.contact__hours,\\n.contact__phone,\\n.contact__email {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.contact__address .icon,\\n.contact__hours .icon,\\n.contact__phone .icon,\\n.contact__email .icon {\\n margin-right: 0.5rem;\\n margin-top: 5px;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n }\\n}\\n\\n.contact-info__content {\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__content {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 0 50%;\\n flex: 1 0 50%;\\n padding-top: 4rem;\\n padding-bottom: 4rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .contact-info__content {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.contact-info__content .gform_wrapper {\\n margin: 4rem 0;\\n}\\n\\n@media (min-width: 601px) {\\n .contact-info__content .gform_fields {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .contact-info__content .gform_fields .gfield {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 100%;\\n flex: 0 0 100%;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .contact-info__content .gform_fields .gf_left_half,\\n .contact-info__content .gform_fields .gf_right_half {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 48%;\\n flex: 0 0 48%;\\n }\\n}\\n\\n.contact-info__content .gform_fields textarea {\\n height: 8rem;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__map {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 1 50%;\\n flex: 0 1 50%;\\n }\\n}\\n\\n.contact-info__map .map__canvas {\\n height: 500px;\\n width: 100%;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__map .map__canvas {\\n height: 100%;\\n }\\n}\\n\\n.contact-info__map .map__canvas .gm-style-iw {\\n max-width: 300px;\\n}\\n\\n.contact-info__map .map__canvas .gm-style-iw img {\\n margin-bottom: 1rem;\\n}\\n\\n.contact-info__map .map__canvas .gm-style-iw a {\\n display: block;\\n margin-top: 1rem;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"],\\n.home .hero[data-featured-bar=\\\"side\\\"] {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n height: calc(100vh - 4rem);\\n min-height: 40rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"],\\n .home .hero[data-featured-bar=\\\"side\\\"] {\\n height: calc(100vh - 7rem);\\n min-height: 45rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"],\\n .home .hero[data-featured-bar=\\\"side\\\"] {\\n min-height: 55rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n.home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n height: auto;\\n min-height: 25rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n .home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n min-height: 30rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n .home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n min-height: 40rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-pack: distribute;\\n justify-content: space-around;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n padding: 1.5rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar {\\n padding: 1.5rem 2rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .col + .col,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .col + .col {\\n margin-left: 1rem;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .featured-content-3,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .featured-content-3 {\\n display: none;\\n}\\n\\n@media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .featured-content-3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .featured-content-3 {\\n display: block;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n display: none;\\n}\\n\\n@media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n display: block;\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 40%;\\n flex: 0 0 40%;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 50%;\\n flex: 0 0 50%;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser {\\n margin-right: 0;\\n width: 100%;\\n -ms-flex-preferred-size: 100%;\\n flex-basis: 100%;\\n}\\n\\n@media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .meta,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .meta {\\n display: none;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .post__content,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .post__content {\\n padding-top: 0;\\n margin-right: 1rem;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container {\\n -webkit-box-ordinal-group: 3;\\n -ms-flex-order: 2;\\n order: 2;\\n position: relative;\\n width: 100%;\\n padding-bottom: 2rem;\\n display: none;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container {\\n display: block;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::before,\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::after,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::before,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::after {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n content: \\\"\\\";\\n width: 100%;\\n background-color: #ececec;\\n height: 5px;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::after,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::after {\\n background-color: #3fd8b6;\\n width: 80%;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media {\\n -webkit-box-shadow: 0 0 20px #cecece;\\n box-shadow: 0 0 20px #cecece;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media[data-ratio=\\\"1:1\\\"],\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media[data-ratio=\\\"1:1\\\"] {\\n padding-bottom: 65%;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h2,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h2 {\\n text-transform: uppercase;\\n font-size: 0.75rem;\\n opacity: 0.75;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h3,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h3 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h3 {\\n font-size: 1.25rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content p,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content p {\\n display: none;\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content p,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content p {\\n display: block;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] {\\n min-height: 65rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar {\\n padding: 2rem 5rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .col + .col {\\n margin-left: 2rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post {\\n max-width: 750px;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post {\\n max-width: 800px;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .post__content {\\n margin-right: 3rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .hero.home[data-featured-bar=\\\"side\\\"] {\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n max-width: 24rem;\\n height: 100%;\\n padding: 2rem 4rem;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar__content {\\n width: 100%;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar .col + .col {\\n margin-left: 0;\\n margin-top: 2rem;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .post--teaser {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -ms-flex-preferred-size: 100%;\\n flex-basis: 100%;\\n margin-right: 0;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .post--teaser .media {\\n margin-top: 3rem;\\n }\\n}\\n\\n.home .hero[data-nav-buttons=\\\"true\\\"] .featured-bar {\\n margin-bottom: 50px;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-nav-buttons=\\\"true\\\"] .featured-bar {\\n margin-bottom: 0;\\n }\\n}\\n\\n.featured-blocks .block {\\n width: 100%;\\n}\\n\\n.featured-blocks .block a {\\n display: block;\\n position: relative;\\n}\\n\\n.featured-blocks .block a .block__image {\\n position: relative;\\n}\\n\\n.featured-blocks .block a .block__image::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n -webkit-transition: all 0.3s ease-in-out;\\n -o-transition: all 0.3s ease-in-out;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.featured-blocks .block a .block__image:hover::after {\\n opacity: 0.3;\\n}\\n\\n.featured-blocks .block a .block__content {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n padding: 2rem 3rem;\\n color: #fff;\\n z-index: 2;\\n}\\n\\n@media (min-width: 601px) {\\n .featured-blocks .block a .block__content {\\n padding: 3.5rem 6rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks .block a .block__content {\\n padding: 2rem 3rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks .block a .block__content {\\n padding: 2.75rem 4.5rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .featured-blocks .block a .block__content {\\n padding: 3.5rem 6rem;\\n }\\n}\\n\\n.featured-blocks .block a .block__content h2 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 300;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n margin-bottom: 0;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks .block a .block__content h2 {\\n font-size: 1.75rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks .block a .block__content h2 {\\n font-size: 2rem;\\n }\\n}\\n\\n.featured-blocks .block a .block__content h2 + p {\\n margin-top: 0.75rem;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks .featured-blocks-slider-pagination {\\n display: none;\\n }\\n}\\n\\n.featured-blocks__list {\\n margin-left: -2rem;\\n margin-right: -2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks__list {\\n margin-left: -6rem;\\n margin-right: -6rem;\\n }\\n}\\n\\n.featured-blocks .component__inner {\\n padding-bottom: 0;\\n}\\n\\n.featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 6rem;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 9rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 12.5rem;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .featured-blocks[data-blocks=\\\"2\\\"] .block {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 50%;\\n flex: 0 0 50%;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks[data-blocks=\\\"3\\\"] .block {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 33.333%;\\n flex: 0 0 33.333%;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks[data-blocks=\\\"4\\\"] .block {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 25%;\\n flex: 0 0 25%;\\n }\\n}\\n\\n.filter {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n white-space: nowrap;\\n font-size: 1.25rem;\\n line-height: 1.5;\\n}\\n\\n.filter__options {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n margin-left: 0;\\n list-style: none;\\n border-left: #181d25 2px solid;\\n margin-bottom: 0;\\n}\\n\\n.filter__option {\\n color: #979797;\\n padding: 0rem 1rem;\\n}\\n\\n.filter__option.is-active {\\n color: #181d25;\\n}\\n\\n.priority-nav {\\n white-space: nowrap;\\n}\\n\\n.priority-nav__wrapper {\\n position: relative;\\n}\\n\\n.priority-nav__dropdown {\\n list-style: none;\\n margin-left: 0;\\n background: #fff;\\n -webkit-box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n padding: 1rem 0rem;\\n position: absolute;\\n top: 100%;\\n right: 0;\\n opacity: 0;\\n margin-top: 0.25rem;\\n -webkit-transform: translate(0, 1rem);\\n -o-transform: translate(0, 1rem);\\n transform: translate(0, 1rem);\\n -webkit-transition: opacity 0.2s ease, visibility 0.5s ease, -webkit-transform 0.4s ease;\\n transition: opacity 0.2s ease, visibility 0.5s ease, -webkit-transform 0.4s ease;\\n -o-transition: opacity 0.2s ease, visibility 0.5s ease, -o-transform 0.4s ease;\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease, -webkit-transform 0.4s ease, -o-transform 0.4s ease;\\n visibility: hidden;\\n z-index: 1;\\n}\\n\\n.priority-nav__dropdown > li {\\n margin-left: 0;\\n}\\n\\n.priority-nav__dropdown::before {\\n content: '';\\n background-color: #fff;\\n -webkit-box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 2rem;\\n width: 2.25rem;\\n right: 0;\\n position: absolute;\\n bottom: 100%;\\n -webkit-transform: translateY(100%);\\n -o-transform: translateY(100%);\\n transform: translateY(100%);\\n -webkit-transition: -webkit-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: -webkit-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: -o-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955), -o-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.priority-nav__dropdown.show {\\n opacity: 1;\\n -webkit-transform: translate(0, 0);\\n -o-transform: translate(0, 0);\\n transform: translate(0, 0);\\n visibility: visible;\\n}\\n\\n.priority-nav__dropdown.show::before {\\n -webkit-transform: translate(0);\\n -o-transform: translate(0);\\n transform: translate(0);\\n}\\n\\n.priority-nav__dropdown-toggle {\\n background-color: transparent;\\n border: 0;\\n border-radius: 0;\\n color: #3fd8b6;\\n padding: 0;\\n outline: none !important;\\n cursor: pointer;\\n display: block;\\n visibility: hidden;\\n position: absolute;\\n padding: 0 0.375rem;\\n z-index: 2;\\n}\\n\\n.priority-nav__dropdown-toggle:hover {\\n background-color: transparent;\\n color: #2bd3ad;\\n}\\n\\n.priority-nav__dropdown-toggle:active {\\n background-color: transparent;\\n color: #26be9c;\\n}\\n\\n.priority-nav__dropdown-toggle svg {\\n pointer-events: none;\\n -webkit-transition: fill 0.4s ease;\\n -o-transition: fill 0.4s ease;\\n transition: fill 0.4s ease;\\n}\\n\\n.priority-nav__dropdown-toggle:hover svg {\\n fill: #3fd8b6;\\n}\\n\\n.priority-nav-has-dropdown .priority-nav__dropdown-toggle {\\n position: relative;\\n}\\n\\n.priority-nav.is-open .priority-nav__dropdown-toggle svg {\\n fill: #3fd8b6;\\n}\\n\\n.priority-nav-is-visible {\\n visibility: visible;\\n}\\n\\n.priority-nav-is-hidden {\\n visibility: hidden;\\n}\\n\\n.overlay-show {\\n background-color: #000;\\n opacity: 0;\\n position: fixed;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n pointer-events: none;\\n -webkit-transition: opacity 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n -o-transition: opacity 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: opacity 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n z-index: 1000;\\n}\\n\\n.overlay-visible .overlay-show,\\n.overlay-show.show {\\n pointer-events: all;\\n opacity: 0.6;\\n}\\n\\n.flyout {\\n -webkit-transform: translateX(101%);\\n -o-transform: translateX(101%);\\n transform: translateX(101%);\\n background-color: #fff;\\n overflow: hidden;\\n -webkit-overflow-scrolling: touch;\\n overflow-y: scroll;\\n position: fixed;\\n top: 0;\\n right: 0;\\n -webkit-transition: -webkit-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: -webkit-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n -o-transition: -o-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1), -o-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n will-change: transform;\\n height: 100%;\\n width: 100%;\\n z-index: 1300;\\n}\\n\\n@media (min-width: 601px) {\\n .flyout {\\n max-width: 40rem;\\n }\\n}\\n\\n.flyout.show {\\n -webkit-transform: translate3d(0, 0, 0) scale(1);\\n transform: translate3d(0, 0, 0) scale(1);\\n}\\n\\n.no-csstransforms .flyout {\\n right: -200%;\\n}\\n\\n.no-csstransforms .flyout.show {\\n right: 0%;\\n}\\n\\n.flyout__inner {\\n padding: 2.5rem;\\n}\\n\\n.flyout__close {\\n padding: 2rem;\\n height: 1.25rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 1;\\n}\\n\\n.flyout__close::before,\\n.flyout__close::after {\\n content: '';\\n background-color: #000;\\n -webkit-transition: background-color 0.4s ease;\\n -o-transition: background-color 0.4s ease;\\n transition: background-color 0.4s ease;\\n height: 0.125rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n}\\n\\n.flyout--team .flyout__close::before,\\n.flyout--team .flyout__close::after {\\n background-color: #fff;\\n}\\n\\n.flyout__close::before {\\n -webkit-transform: translate(-50%, -50%) rotate(45deg);\\n -o-transform: translate(-50%, -50%) rotate(45deg);\\n transform: translate(-50%, -50%) rotate(45deg);\\n}\\n\\n.flyout__close::after {\\n -webkit-transform: translate(-50%, -50%) rotate(-45deg);\\n -o-transform: translate(-50%, -50%) rotate(-45deg);\\n transform: translate(-50%, -50%) rotate(-45deg);\\n}\\n\\n.flyout__close:hover::before,\\n.flyout__close:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\n.flyout-data {\\n display: none;\\n}\\n\\n.flyout .flyout-data {\\n display: block;\\n}\\n\\n.footer {\\n display: block;\\n padding: 6rem 2rem;\\n padding-top: 2.5rem;\\n padding-bottom: 2.5rem;\\n font-size: 0.75rem;\\n}\\n\\n@media (min-width: 901px) {\\n .footer {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .footer {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.footer > :last-child {\\n margin-bottom: 0;\\n}\\n\\n@media (max-width: 600px) {\\n .footer {\\n text-align: center;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .footer {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n padding-top: 4rem;\\n padding-bottom: 4rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .footer {\\n padding-top: 6rem;\\n padding-bottom: 6rem;\\n }\\n}\\n\\n.footer a {\\n color: #181d25;\\n font-size: inherit;\\n font-weight: 400;\\n}\\n\\n.footer a:hover {\\n color: #3fd8b6;\\n}\\n\\n.footer a:active {\\n color: #26be9c;\\n}\\n\\n.footer .company {\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .footer .company {\\n margin-bottom: 0;\\n }\\n}\\n\\n.footer .contact {\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .footer .contact {\\n margin-bottom: 0;\\n }\\n}\\n\\n@media (max-width: 600px) {\\n .footer span {\\n display: block;\\n }\\n}\\n\\n.footer .copyright,\\n.footer .privacy-policy {\\n margin-bottom: 0.5rem;\\n}\\n\\n.footer .divider {\\n display: inline-block;\\n margin: 0 0.5rem;\\n}\\n\\n@media (max-width: 600px) {\\n .footer .divider {\\n display: none;\\n }\\n}\\n\\n.gform_fields {\\n list-style: none;\\n margin-left: 0;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-flow: row wrap;\\n flex-flow: row wrap;\\n}\\n\\n.gform_fields > li {\\n margin-left: 0;\\n}\\n\\n.gfield {\\n -ms-flex-preferred-size: 100%;\\n flex-basis: 100%;\\n margin-bottom: 1.5rem;\\n}\\n\\n.gfield_radio,\\n.gfield_checkbox {\\n list-style: none;\\n margin-left: 0;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n}\\n\\n.gfield_radio > li,\\n.gfield_checkbox > li {\\n margin-left: 0;\\n}\\n\\n.gfield_radio li,\\n.gfield_checkbox li {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n\\n.gfield_radio li > *,\\n.gfield_checkbox li > * {\\n cursor: pointer;\\n}\\n\\n.gfield_label {\\n font-weight: 700;\\n display: none;\\n}\\n\\n.show-label .gfield_label {\\n display: block;\\n}\\n\\n.gfield.half-col {\\n -ms-flex-preferred-size: calc(50% - 0.75rem);\\n flex-basis: calc(50% - 0.75rem);\\n margin-right: 1.5rem;\\n}\\n\\n.gfield.half-col + .gfield.half-col {\\n margin-right: 0;\\n}\\n\\n.ginput_complex {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.ginput_complex > span {\\n -ms-flex-preferred-size: 100%;\\n flex-basis: 100%;\\n}\\n\\n.ginput_complex > span:not(:last-child) {\\n margin-right: 1.5rem;\\n}\\n\\n.ginput_complex > span label {\\n font-size: 0.875rem;\\n}\\n\\n.ss-main {\\n color: #181d25;\\n font-size: 1rem;\\n}\\n\\n.ss-main .ss-single-selected {\\n background-color: #fff;\\n border: #e6e6e6 2px solid;\\n border-radius: 0.25rem;\\n padding: 0.5rem 1rem 0.5rem 1.5rem;\\n -webkit-transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n height: 2.75rem;\\n}\\n\\n.ss-main .ss-single-selected .placeholder {\\n line-height: 1.5;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span {\\n border-color: #979797;\\n -webkit-transition: all 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: all 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: all 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-up {\\n margin: 4px 0 0;\\n -webkit-transform: rotate(-45deg) scaleY(-1);\\n -o-transform: rotate(-45deg) scaleY(-1);\\n transform: rotate(-45deg) scaleY(-1);\\n}\\n\\n.ss-main .ss-single-selected:hover,\\n.ss-main .ss-single-selected:focus,\\n.ss-main .ss-single-selected.ss-open-below {\\n border-color: #3fd8b6;\\n}\\n\\n.ss-main .ss-single-selected:hover .ss-arrow span,\\n.ss-main .ss-single-selected:focus .ss-arrow span,\\n.ss-main .ss-single-selected.ss-open-below .ss-arrow span {\\n border-color: #3fd8b6;\\n}\\n\\n.ss-main .ss-content {\\n border: 0;\\n border-radius: 0.25rem;\\n -webkit-box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n margin: 1rem 0rem 0rem;\\n overflow: hidden;\\n}\\n\\n.ss-main .ss-content::before {\\n content: '';\\n background: red;\\n position: absolute;\\n bottom: 100%;\\n right: 1rem;\\n height: 1rem;\\n width: 2rem;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option {\\n padding: 0.5rem 1.5rem;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option:not(.ss-disabled):hover {\\n background-color: #f9f9fa;\\n color: #181d25;\\n}\\n\\n.gallery {\\n text-align: center;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .gallery {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n }\\n}\\n\\n.gallery__inner {\\n display: grid;\\n /* (1) */\\n grid-template-columns: repeat(2, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(2, 1fr);\\n /* (3) */\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n /* (5) */\\n margin-left: 16px;\\n margin-right: 16px;\\n}\\n\\n@media (min-width: 601px) {\\n .gallery__inner {\\n grid-template-columns: repeat(3, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */\\n margin-left: -8px;\\n margin-right: -8px;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .gallery__inner {\\n grid-template-columns: repeat(4, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .gallery__inner {\\n margin-left: -12px;\\n margin-right: -12px;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n [data-max=\\\"5\\\"] .gallery__inner {\\n grid-template-columns: repeat(3, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */\\n }\\n}\\n\\n@media (min-width: 901px) {\\n [data-max=\\\"5\\\"] .gallery__inner {\\n grid-template-columns: repeat(4, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(2, 1fr);\\n /* (3) */\\n }\\n}\\n\\n.gallery__image {\\n position: relative;\\n /* --columns: 2;\\n flex-basis: map-get($column-widths, 2);\\n margin-bottom: spacing();\\n\\n @include from(s) {\\n --columns: 3;\\n flex-basis: map-get($column-widths, 3);\\n margin-bottom: spacing(2);\\n }\\n\\n @include from(m) {\\n /* .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n --columns: 4;\\n flex-basis: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n --columns: 5;\\n flex-basis: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n --columns: 6;\\n flex-basis: map-get($column-widths, 6);\\n }\\n } */\\n}\\n\\n.gallery__image:first-child {\\n grid-column: 1 / 3;\\n /* (6) */\\n grid-row: 1 / 3;\\n /* (7) */\\n}\\n\\n@media (min-width: 901px) {\\n .gallery__image:first-child {\\n grid-column: 1 / 3;\\n /* (6) */\\n grid-row: 1 / 3;\\n /* (7) */\\n }\\n}\\n\\n.gallery[data-visible=\\\"6\\\"] .gallery__image:nth-child(n + 7) {\\n display: none;\\n}\\n\\n.gallery[data-visible=\\\"8\\\"] .gallery__image:nth-child(n + 9) {\\n display: none;\\n}\\n\\n.gallery[data-visible=\\\"10\\\"] .gallery__image:nth-child(n + 11) {\\n display: none;\\n}\\n\\n.gallery[data-visible=\\\"12\\\"] .gallery__image:nth-child(n + 13) {\\n display: none;\\n}\\n\\n.gallery__image .media[data-ratio=\\\"1:1\\\"] {\\n width: calc(100% - 16px);\\n height: calc(100% - 16px);\\n padding-bottom: calc(100% - 16px);\\n margin: 8px;\\n}\\n\\n@media (min-width: 1201px) {\\n .gallery__image .media[data-ratio=\\\"1:1\\\"] {\\n width: calc(100% - 24px);\\n height: calc(100% - 24px);\\n padding-bottom: calc(100% - 24px);\\n margin: 12px;\\n }\\n}\\n\\n.gallery__image--hidden {\\n display: none;\\n}\\n\\n.gallery__more {\\n background: rgba(0, 0, 0, 0.5);\\n color: #fff;\\n pointer-events: none;\\n font-size: 2rem;\\n font-weight: 700;\\n position: absolute;\\n right: 0;\\n bottom: 0.5rem;\\n height: 0;\\n /* padding-bottom: map-get($column-widths, 2);\\n width: map-get($column-widths, 2);\\n\\n @include from(s) {\\n bottom: spacing(2);\\n padding-bottom: map-get($column-widths, 3);\\n width: map-get($column-widths, 3);\\n }\\n\\n @include from(m) {\\n .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n padding-bottom: map-get($column-widths, 4);\\n width: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n padding-bottom: map-get($column-widths, 5);\\n width: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n padding-bottom: map-get($column-widths, 6);\\n width: map-get($column-widths, 6);\\n }\\n } */\\n}\\n\\n.gallery__extra {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n -o-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n}\\n\\n.hamburger {\\n cursor: pointer;\\n}\\n\\n.hamburger__box {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n height: 0.75rem;\\n width: 1.125rem;\\n}\\n\\n.hamburger__layer {\\n background-color: #000;\\n display: block;\\n height: 0.125rem;\\n width: 100%;\\n}\\n\\n.nav-in-hero .header .hamburger__layer {\\n background-color: #fff;\\n}\\n\\n.nav-in-hero .header,\\n.nav-in-hero--front.home .header,\\n.nav-in-hero .header__inner,\\n.nav-in-hero--front.home .header__inner {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n}\\n\\n.header__inner {\\n background-color: #fff;\\n height: 4rem;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n position: relative;\\n padding: 1rem 2rem;\\n -webkit-transition: background-color 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background-color 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: background-color 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background-color 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: background-color 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n width: 100%;\\n z-index: 100;\\n}\\n\\n@media (min-width: 901px) {\\n .header__inner {\\n padding: 2rem;\\n height: 7rem;\\n }\\n}\\n\\n.nav-in-hero .header__inner,\\n.nav-in-hero--front.home .header__inner {\\n background-color: transparent;\\n border: 0;\\n}\\n\\n.sticky-header .header .header__inner {\\n background-color: #fff;\\n border-bottom: #f9f9fa 1px solid;\\n -webkit-box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n -webkit-transform: translateY(-100%);\\n -o-transform: translateY(-100%);\\n transform: translateY(-100%);\\n -webkit-transition: -webkit-transform 0s linear;\\n transition: -webkit-transform 0s linear;\\n -o-transition: -o-transform 0s linear;\\n transition: transform 0s linear;\\n transition: transform 0s linear, -webkit-transform 0s linear, -o-transform 0s linear;\\n position: fixed;\\n}\\n\\n.sticky-header .header .header__inner.is-up,\\n.sticky-header .header .header__inner.is-down {\\n -webkit-transition: -webkit-transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: -webkit-transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: -o-transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), -o-transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.sticky-header .header .header__inner.is-up {\\n -webkit-transform: translateY(-100%);\\n -o-transform: translateY(-100%);\\n transform: translateY(-100%);\\n}\\n\\n.sticky-header .header .header__inner.is-down {\\n -webkit-transform: translateY(0);\\n -o-transform: translateY(0);\\n transform: translateY(0);\\n}\\n\\n.header__inner .brand {\\n display: block;\\n position: relative;\\n height: 100%;\\n width: 5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .header__inner .brand {\\n width: 5rem;\\n }\\n}\\n\\n.header__inner .brand .logo {\\n height: 100%;\\n width: auto;\\n}\\n\\n.header__inner .nav--primary {\\n -webkit-box-flex: 1;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\\n.hero {\\n position: relative;\\n}\\n\\n.internal .hero .hero__wrap,\\n.single .hero .hero__wrap {\\n min-height: 20rem;\\n}\\n\\n@media (min-width: 601px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 25rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 30rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 35rem;\\n }\\n}\\n\\n.home .hero {\\n height: calc(100vh - 4rem);\\n min-height: 30rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero {\\n min-height: 35rem;\\n height: calc(100vh - 7rem);\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero {\\n min-height: 45rem;\\n }\\n}\\n\\n.home .hero .swiper-container {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n}\\n\\n.home .hero .swiper-container .swiper-slide {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n.home .hero .swiper-container .swiper-slide .hero__inner {\\n position: relative;\\n}\\n\\n.home .hero .swiper-container .slider__pagination {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.hero__wrap {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n position: relative;\\n height: 100%;\\n}\\n\\n.hero__media {\\n width: 100%;\\n z-index: -2;\\n}\\n\\n.hero--banner .hero__media {\\n -webkit-box-ordinal-group: 3;\\n -ms-flex-order: 2;\\n order: 2;\\n}\\n\\n.hero.content-align--center .hero__content {\\n text-align: center;\\n}\\n\\n.hero.content-align--center .hero__content__inner {\\n margin: auto;\\n}\\n\\n.hero.content-align--right .hero__content {\\n text-align: right;\\n}\\n\\n.hero.content-align--right .hero__content__inner {\\n margin-right: 0;\\n margin-left: auto;\\n}\\n\\n.hero .bg-img::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n -webkit-transition: all 0.3s ease-in-out;\\n -o-transition: all 0.3s ease-in-out;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.hero__video::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n -webkit-transition: all 0.3s ease-in-out;\\n -o-transition: all 0.3s ease-in-out;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.hero__video + .hero__media .bg-img::after {\\n background-color: transparent;\\n}\\n\\n.hero__inner {\\n width: 100%;\\n z-index: 1;\\n}\\n\\n.hero__content {\\n display: block;\\n padding: 6rem 2rem;\\n color: #fff;\\n}\\n\\n@media (min-width: 901px) {\\n .hero__content {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .hero__content {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.hero__content > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.home .hero__content__inner {\\n max-width: 40rem;\\n}\\n\\n.hero--full .hero__content {\\n color: #fff;\\n}\\n\\n.hero--banner .hero__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem;\\n padding-top: 1.5rem;\\n padding-bottom: 2.5rem;\\n width: 100%;\\n}\\n\\n@media (min-width: 1201px) {\\n .hero--banner .hero__content {\\n max-width: 70rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .hero--banner .hero__content {\\n max-width: 80rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .hero--banner .hero__content {\\n padding-top: 3rem;\\n padding-bottom: 5rem;\\n }\\n}\\n\\n.hero__content .meta {\\n margin-bottom: 2rem;\\n color: #fff;\\n}\\n\\n.hero__content .meta:last-child {\\n margin-bottom: 0;\\n}\\n\\n.hero__content .meta a {\\n color: #fff;\\n}\\n\\n.hero__content .meta a:hover,\\n.hero__content .meta a:focus {\\n color: #3fd8b6;\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n width: 100%;\\n}\\n\\n@media (min-width: 901px) {\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta {\\n display: none;\\n }\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links {\\n width: 100%;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button {\\n width: 100%;\\n text-align: center;\\n}\\n\\n@media (max-width: 600px) {\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n }\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button + .button {\\n margin-left: 1px;\\n}\\n\\n.icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n}\\n\\n.icon--large {\\n height: 2.5rem;\\n width: 2.5rem;\\n}\\n\\n.fade-lazyload {\\n -webkit-transition-property: opacity;\\n -o-transition-property: opacity;\\n transition-property: opacity;\\n -webkit-transition-duration: 0.3s;\\n -o-transition-duration: 0.3s;\\n transition-duration: 0.3s;\\n -webkit-transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n opacity: 0;\\n}\\n\\n.fade-lazyload.lazyloaded {\\n opacity: 1;\\n}\\n\\n.list {\\n list-style: none;\\n margin-left: 0;\\n}\\n\\n.list > li {\\n margin-left: 0;\\n}\\n\\n.list__item {\\n border-top: #979797 2px solid;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n padding: 1.5rem 0rem;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: start;\\n -ms-flex-pack: start;\\n justify-content: flex-start;\\n}\\n\\n.list__item__inner {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-flex: 1;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\\n.list__item__icon {\\n fill: #3fd8b6;\\n line-height: 0;\\n position: relative;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-right: 1rem;\\n}\\n\\n.list__item__icon .icon {\\n position: absolute;\\n top: 50%;\\n left: 0;\\n -webkit-transform: translate(0, -50%);\\n -o-transform: translate(0, -50%);\\n transform: translate(0, -50%);\\n}\\n\\n.list__item.has-description .list__item__inner {\\n display: block;\\n}\\n\\n.map__legend {\\n display: none;\\n}\\n\\n.map__canvas {\\n height: 100vw;\\n}\\n\\n@media (min-width: 601px) {\\n .map {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n }\\n\\n .map__legend {\\n background-color: #fff;\\n display: block;\\n min-width: 25vw;\\n }\\n\\n .component.u-background-color--light + .map .map__legend {\\n background-color: #f9f9fa;\\n }\\n\\n .map__handler {\\n -webkit-box-flex: 1;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n }\\n\\n .map__canvas {\\n height: 100%;\\n }\\n}\\n\\n.legend {\\n padding: 2rem;\\n}\\n\\n.legend__list {\\n list-style: none;\\n margin-left: 0;\\n}\\n\\n.legend__list > li {\\n margin-left: 0;\\n}\\n\\n.legend__pin {\\n border-top: #979797 2px solid;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n padding: 1.5rem 0rem;\\n cursor: pointer;\\n -webkit-transition: color 0.4s ease;\\n -o-transition: color 0.4s ease;\\n transition: color 0.4s ease;\\n}\\n\\n.legend__pin__inner {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-flex: 1;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n}\\n\\n.legend__pin.is-active,\\n.legend__pin:hover {\\n color: #3fd8b6;\\n}\\n\\n.legend__pin:active {\\n color: #2bd3ad;\\n}\\n\\n.legend__pin * {\\n pointer-events: none;\\n}\\n\\n.media {\\n background-color: #313131;\\n position: relative;\\n height: auto;\\n padding-bottom: 100%;\\n overflow: hidden;\\n width: 100%;\\n}\\n\\n.media[data-ratio=\\\"1:1\\\"] {\\n padding-bottom: 100%;\\n}\\n\\n.media[data-ratio=\\\"16:9\\\"] {\\n padding-bottom: 56.25%;\\n}\\n\\n.media[data-ratio=\\\"21:9\\\"] {\\n padding-bottom: 42.85714%;\\n}\\n\\n.media * {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n\\n.media picture,\\n.media img {\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n\\n.meta {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n line-height: 1.2;\\n}\\n\\n.meta__prop {\\n border-left: #979797 1px solid;\\n padding-left: 0.5rem;\\n margin-left: 0.5rem;\\n}\\n\\n.meta__prop:first-child {\\n border: none;\\n padding-left: 0;\\n margin-left: 0;\\n}\\n\\n.meta a {\\n color: #181d25;\\n font-weight: 400;\\n}\\n\\n.meta a:hover {\\n color: #3fd8b6;\\n}\\n\\n.meta a:active {\\n color: #26be9c;\\n}\\n\\n.nav--mobile {\\n margin: 0;\\n padding: 0;\\n background: #fff;\\n border-left: 1px solid #e6e6e6;\\n overflow-x: hidden;\\n overflow-y: auto;\\n position: fixed;\\n top: 0;\\n right: 0;\\n -webkit-overflow-scrolling: touch;\\n -webkit-transform: translateX(100%);\\n -o-transform: translateX(100%);\\n transform: translateX(100%);\\n -webkit-transition: -webkit-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: -webkit-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n -o-transition: -o-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1), -o-transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n width: 100%;\\n height: 100%;\\n z-index: 1001;\\n}\\n\\n.nav--mobile .flyout__close {\\n padding: 0;\\n position: relative;\\n}\\n\\n.nav--mobile .nav__inner {\\n padding: 6rem 2rem;\\n position: relative;\\n}\\n\\n@media (min-width: 601px) and (max-width: 900px) and (orientation: landscape) {\\n .nav--mobile .nav__inner {\\n padding: 6rem 2rem 2rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .nav--mobile .nav__inner {\\n padding: 10rem 4rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .nav--mobile .nav__inner {\\n padding: 11.5rem 5rem;\\n }\\n}\\n\\n.nav--mobile a {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n -webkit-transform: translateZ(0);\\n transform: translateZ(0);\\n -webkit-transition: opacity 0.3s, color 0.4s ease, -webkit-transform 0.3s;\\n transition: opacity 0.3s, color 0.4s ease, -webkit-transform 0.3s;\\n -o-transition: opacity 0.3s, color 0.4s ease, -o-transform 0.3s;\\n transition: transform 0.3s, opacity 0.3s, color 0.4s ease;\\n transition: transform 0.3s, opacity 0.3s, color 0.4s ease, -webkit-transform 0.3s, -o-transform 0.3s;\\n will-change: transform, opacity;\\n white-space: nowrap;\\n}\\n\\n.no-js .nav--mobile {\\n position: relative;\\n height: auto;\\n width: 100%;\\n overflow: visible;\\n visibility: visible;\\n z-index: 2;\\n}\\n\\n.nav--mobile__contact {\\n padding-top: 2rem;\\n}\\n\\n.nav--mobile__contact .contact-info {\\n text-align: left;\\n}\\n\\n.nav--mobile__contact .contact-info > ul {\\n margin-bottom: 0;\\n}\\n\\n.nav--mobile__contact .contact-info > ul li {\\n padding: 0.5rem 0rem;\\n}\\n\\n.nav--mobile__buttons {\\n padding-top: 4rem;\\n text-align: center;\\n}\\n\\n.nav--mobile__buttons .button {\\n margin-bottom: 0.5rem;\\n width: 90%;\\n}\\n\\n.nav--mobile__social {\\n margin-top: 2rem;\\n}\\n\\n.nav--mobile__social .social {\\n margin-bottom: 0;\\n}\\n\\n.nav--mobile .links .button {\\n display: block;\\n text-align: center;\\n max-width: 350px;\\n}\\n\\n.nav--mobile .links .button + .button {\\n margin-top: 1rem;\\n}\\n\\n.nav--mobile .nav__footer {\\n margin-top: 4rem;\\n}\\n\\n.menu--desktop {\\n list-style: none;\\n margin-left: 0;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: end;\\n -ms-flex-pack: end;\\n justify-content: flex-end;\\n width: 100%;\\n}\\n\\n.menu--desktop > li {\\n margin-left: 0;\\n}\\n\\n.menu--desktop .menu__item {\\n line-height: 1.5;\\n margin-right: 3rem;\\n position: relative;\\n}\\n\\n.menu--desktop .menu__item--parent-link > .icon {\\n content: url(\" + escape(require(\"../images/symbols/chevron-up.svg\")) + \");\\n fill: #181d25;\\n display: block;\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-transform: translate(-50%, 0) scaleY(-1);\\n -o-transform: translate(-50%, 0) scaleY(-1);\\n transform: translate(-50%, 0) scaleY(-1);\\n -webkit-transition: fill 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: fill 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: fill 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -o-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), fill 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), fill 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), -o-transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n z-index: 15;\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item--parent-link > .icon {\\n fill: #fff;\\n}\\n\\n.menu--desktop .menu__item--parent-link.is-expanded > .icon {\\n -webkit-transform: translate(-50%, 0) scaleY(1);\\n -o-transform: translate(-50%, 0) scaleY(1);\\n transform: translate(-50%, 0) scaleY(1);\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item--parent-link.is-expanded > .icon {\\n fill: #181d25;\\n}\\n\\n.menu--desktop .menu__item a {\\n color: #181d25;\\n display: block;\\n font-weight: 400;\\n}\\n\\n.menu--desktop .menu__item a:hover {\\n color: #3fd8b6;\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item a {\\n color: #fff;\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item a:hover {\\n color: #3fd8b6;\\n}\\n\\n.menu--desktop .menu__item .sub-menu {\\n background-color: #fff;\\n -webkit-box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n opacity: 0;\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n margin: 0;\\n list-style: none;\\n margin-top: 1.25rem;\\n min-width: 11rem;\\n padding: 1.5rem 2rem;\\n -webkit-transform: translate(-50%, 1rem);\\n -o-transform: translate(-50%, 1rem);\\n transform: translate(-50%, 1rem);\\n -webkit-transition: opacity 0.2s ease, visibility 0.5s ease, -webkit-transform 0.4s ease;\\n transition: opacity 0.2s ease, visibility 0.5s ease, -webkit-transform 0.4s ease;\\n -o-transition: opacity 0.2s ease, visibility 0.5s ease, -o-transform 0.4s ease;\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease, -webkit-transform 0.4s ease, -o-transform 0.4s ease;\\n width: rem-calc(400);\\n visibility: hidden;\\n z-index: 10;\\n}\\n\\n.menu--desktop .menu__item .sub-menu::before {\\n content: '';\\n background-color: #fff;\\n -webkit-box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 1.25rem;\\n width: 2.25rem;\\n left: 50%;\\n position: absolute;\\n bottom: 100%;\\n -webkit-transform: translateX(-50%) translateY(100%);\\n -o-transform: translateX(-50%) translateY(100%);\\n transform: translateX(-50%) translateY(100%);\\n -webkit-transition: -webkit-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: -webkit-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n -o-transition: -o-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955), -webkit-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955), -o-transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item {\\n line-height: 1.2;\\n margin-bottom: 1.5rem;\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item:last-child {\\n margin-bottom: 0;\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item a,\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item .sub-menu .menu__item a {\\n color: #181d25;\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item a:hover,\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item .sub-menu .menu__item a:hover {\\n color: #3fd8b6;\\n}\\n\\n.menu--desktop .menu__item.is-expanded .sub-menu {\\n opacity: 1;\\n -webkit-transform: translate(-50%, 0);\\n -o-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n visibility: visible;\\n}\\n\\n.menu--desktop .menu__item.is-expanded .sub-menu::before {\\n -webkit-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n transform: translateX(-50%);\\n}\\n\\n.menu--mobile {\\n position: relative;\\n}\\n\\n.menu--mobile .menu__wrap {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n width: 100%;\\n}\\n\\n.menu--mobile .menu__level {\\n background: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n overflow: hidden;\\n list-style-type: none;\\n height: auto;\\n visibility: hidden;\\n margin: 0;\\n padding: 0;\\n width: 100%;\\n}\\n\\n.menu--mobile .menu__level--current {\\n visibility: visible;\\n}\\n\\n.menu--mobile .menu__level.animate-outToRight .menu__item {\\n -webkit-animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n -o-animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__level.animate-outToLeft .menu__item {\\n -webkit-animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n -o-animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__level.animate-inFromLeft .menu__item {\\n -webkit-animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n -o-animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__level.animate-inFromRight .menu__item {\\n -webkit-animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n -o-animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__item {\\n display: block;\\n margin: 0;\\n}\\n\\n.menu--mobile .menu__item:last-child .menu__link {\\n border-bottom: 0;\\n}\\n\\n.menu--mobile .menu__link {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: start;\\n -ms-flex-pack: start;\\n justify-content: flex-start;\\n color: #181d25;\\n fill: #181d25;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1;\\n position: relative;\\n padding: 0.5rem 0rem;\\n text-transform: none;\\n}\\n\\n.menu--mobile .menu__link > * {\\n pointer-events: none;\\n}\\n\\n.menu--mobile .menu__link .icon {\\n height: 1.25rem;\\n width: 1.25rem;\\n margin-left: 0.5rem;\\n}\\n\\n.menu--mobile .menu__link:hover {\\n color: #3fd8b6;\\n fill: #3fd8b6;\\n}\\n\\n.menu--mobile .menu__back {\\n background: #fff;\\n color: #181d25;\\n cursor: pointer;\\n border: 0;\\n bottom: 100%;\\n right: 0;\\n top: -4.5rem;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n font-weight: 700;\\n line-height: 2.5;\\n height: 2rem;\\n padding: 0;\\n position: absolute;\\n opacity: 1;\\n -webkit-transform: translateX(0);\\n -o-transform: translateX(0);\\n transform: translateX(0);\\n -webkit-transition: opacity 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), color 0.4s ease, -webkit-transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: opacity 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), color 0.4s ease, -webkit-transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1);\\n -o-transition: opacity 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), color 0.4s ease, -o-transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1);\\n transition: transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), color 0.4s ease;\\n transition: transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), color 0.4s ease, -webkit-transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), -o-transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1);\\n z-index: 100;\\n}\\n\\n@media (min-width: 901px) {\\n .menu--mobile .menu__back {\\n top: -7.5rem;\\n right: -2rem;\\n }\\n}\\n\\n.menu--mobile .menu__back.is-hidden {\\n pointer-events: none;\\n opacity: 0;\\n -webkit-transform: translateX(20px);\\n -o-transform: translateX(20px);\\n transform: translateX(20px);\\n}\\n\\n.menu--mobile .menu__back .icon {\\n fill: #181d25;\\n -webkit-transition: fill 0.4s ease;\\n -o-transition: fill 0.4s ease;\\n transition: fill 0.4s ease;\\n}\\n\\n.menu--mobile .menu__back:hover,\\n.menu--mobile .menu__back:focus {\\n color: #3fd8b6;\\n outline: none;\\n}\\n\\n.menu--mobile .menu__back:hover .icon,\\n.menu--mobile .menu__back:focus .icon {\\n fill: #3fd8b6;\\n}\\n\\n.menu--mobile [class^='animate-'],\\n.menu--mobile [class*=' animate-'] {\\n visibility: visible;\\n}\\n\\n.content,\\n.main {\\n position: relative;\\n}\\n\\n.page__header {\\n padding: 2.5rem 2rem 0rem;\\n}\\n\\n@media (min-width: 601px) {\\n .page__header {\\n padding: 2.5rem 0rem 0rem;\\n }\\n}\\n\\n.page__inner {\\n display: block;\\n padding: 0rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .page__inner {\\n padding: 0rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .page__inner {\\n padding: 0rem 5rem;\\n }\\n}\\n\\n.page__inner > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.page__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .page__content {\\n max-width: 70rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .page__content {\\n max-width: 80rem;\\n }\\n}\\n\\n.page__body {\\n padding-top: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .page__body {\\n padding-top: 5rem;\\n }\\n}\\n\\n.wp-pagenavi {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n margin-top: 2.5rem;\\n}\\n\\n.wp-pagenavi .pages {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n -webkit-clip-path: inset(50%) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 1px !important;\\n}\\n\\n.wp-pagenavi a,\\n.wp-pagenavi span {\\n border: 0;\\n color: #181d25;\\n margin: 0 0.5rem;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n height: 2rem;\\n width: 2rem;\\n}\\n\\n.wp-pagenavi a:hover {\\n color: #3fd8b6;\\n}\\n\\n.wp-pagenavi .current {\\n background: #3fd8b6;\\n color: #fff;\\n font-weight: 700;\\n}\\n\\n.wp-pagenavi .extend {\\n display: none;\\n}\\n\\n.wp-pagenavi .previouspostslink,\\n.wp-pagenavi .nextpostslink {\\n display: block;\\n overflow: hidden;\\n text-indent: 101%;\\n white-space: nowrap;\\n}\\n\\n.wp-pagenavi .previouspostslink {\\n position: relative;\\n}\\n\\n.wp-pagenavi .previouspostslink::before,\\n.wp-pagenavi .previouspostslink::after {\\n content: '';\\n border-radius: 0.0625em;\\n display: block;\\n position: absolute;\\n left: 50%;\\n background-color: #4a4a4a;\\n -webkit-transition: background-color 0.4s ease;\\n -o-transition: background-color 0.4s ease;\\n transition: background-color 0.4s ease;\\n height: 0.125em;\\n width: 0.5em;\\n}\\n\\n.wp-pagenavi .previouspostslink::before {\\n bottom: 50%;\\n -webkit-transform: translate(-50%, -0.1em) rotate(-45deg);\\n -o-transform: translate(-50%, -0.1em) rotate(-45deg);\\n transform: translate(-50%, -0.1em) rotate(-45deg);\\n}\\n\\n.wp-pagenavi .previouspostslink::after {\\n top: 50%;\\n -webkit-transform: translate(-50%, 0.1em) rotate(45deg);\\n -o-transform: translate(-50%, 0.1em) rotate(45deg);\\n transform: translate(-50%, 0.1em) rotate(45deg);\\n}\\n\\n.wp-pagenavi .previouspostslink:hover::before,\\n.wp-pagenavi .previouspostslink:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\n.wp-pagenavi .nextpostslink {\\n position: relative;\\n}\\n\\n.wp-pagenavi .nextpostslink::before,\\n.wp-pagenavi .nextpostslink::after {\\n content: '';\\n border-radius: 0.0625em;\\n display: block;\\n position: absolute;\\n left: 50%;\\n background-color: #4a4a4a;\\n -webkit-transition: background-color 0.4s ease;\\n -o-transition: background-color 0.4s ease;\\n transition: background-color 0.4s ease;\\n height: 0.125em;\\n width: 0.5em;\\n}\\n\\n.wp-pagenavi .nextpostslink::before {\\n bottom: 50%;\\n -webkit-transform: translate(-50%, -0.1em) rotate(45deg);\\n -o-transform: translate(-50%, -0.1em) rotate(45deg);\\n transform: translate(-50%, -0.1em) rotate(45deg);\\n}\\n\\n.wp-pagenavi .nextpostslink::after {\\n top: 50%;\\n -webkit-transform: translate(-50%, 0.1em) rotate(-45deg);\\n -o-transform: translate(-50%, 0.1em) rotate(-45deg);\\n transform: translate(-50%, 0.1em) rotate(-45deg);\\n}\\n\\n.wp-pagenavi .nextpostslink:hover::before,\\n.wp-pagenavi .nextpostslink:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\n.featured-posts__list {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) {\\n .featured-posts__list {\\n -webkit-box-pack: start;\\n -ms-flex-pack: start;\\n justify-content: flex-start;\\n }\\n}\\n\\n@media (max-width: 1800px) {\\n .featured-posts .post:nth-child(5) {\\n display: none;\\n }\\n}\\n\\n@media (max-width: 1200px) {\\n .featured-posts .post:nth-child(4) {\\n display: none;\\n }\\n}\\n\\n@media (max-width: 900px) {\\n .featured-posts .post:nth-child(3) {\\n display: none;\\n }\\n}\\n\\n.post__inner {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .post__inner {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .post__inner {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.post__inner > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.post__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 40rem;\\n}\\n\\n.post__content picture {\\n margin-bottom: 1.5rem;\\n}\\n\\n.post--teaser {\\n -ms-flex-preferred-size: 100%;\\n flex-basis: 100%;\\n color: #181d25;\\n display: block;\\n font-weight: 400;\\n text-align: left;\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .post--teaser {\\n -ms-flex-preferred-size: calc(50% - 1rem);\\n flex-basis: calc(50% - 1rem);\\n margin-right: 2rem;\\n }\\n\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .post--teaser {\\n -ms-flex-preferred-size: calc(33.33333% - 0.66667rem);\\n flex-basis: calc(33.33333% - 0.66667rem);\\n margin-right: 1rem;\\n }\\n\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 1rem;\\n }\\n\\n .post--teaser:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .post--teaser {\\n -ms-flex-preferred-size: calc(33.33333% - 3.33333rem);\\n flex-basis: calc(33.33333% - 3.33333rem);\\n margin-right: 5rem;\\n }\\n\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 5rem;\\n }\\n}\\n\\n.post--teaser:last-child {\\n margin-bottom: 0;\\n}\\n\\n.post--teaser .post__content {\\n padding-top: 2.5rem;\\n}\\n\\n.post--teaser .meta {\\n font-size: 0.875rem;\\n margin-bottom: 0.5rem;\\n}\\n\\n.post--teaser.post--featured {\\n margin-right: 0;\\n}\\n\\n.post--teaser.post--featured .post__content {\\n margin-right: 0;\\n margin-left: 0;\\n}\\n\\n.slider {\\n text-align: center;\\n}\\n\\n@media (min-width: 601px) {\\n .slider {\\n padding-top: 24px;\\n }\\n}\\n\\n.slider.has-previews .swiper-slide {\\n height: calc(100% - 4rem);\\n width: calc(100% - 4rem);\\n -webkit-transition: -webkit-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -webkit-transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transition: -webkit-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -webkit-transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n -o-transition: -o-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -o-transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -webkit-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -o-transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -webkit-transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, -o-transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n -webkit-transform: scale(0.9);\\n -o-transform: scale(0.9);\\n transform: scale(0.9);\\n -webkit-transform-origin: right center;\\n -o-transform-origin: right center;\\n transform-origin: right center;\\n}\\n\\n.slider.has-previews .swiper-slide.swiper-slide-active,\\n.slider.has-previews .swiper-slide.swiper-slide-duplicate-active {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n}\\n\\n.slider.has-previews .swiper-slide.swiper-slide-active,\\n.slider.has-previews .swiper-slide.swiper-slide-active ~ .swiper-slide {\\n -webkit-transform-origin: left center;\\n -o-transform-origin: left center;\\n transform-origin: left center;\\n}\\n\\n@media (min-width: 601px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(70% - 2rem);\\n width: calc(70% - 2rem);\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(33.33333% - 2.5rem);\\n width: calc(33.33333% - 2.5rem);\\n }\\n\\n .slider.has-previews .swiper-slide.swiper-slide-prev,\\n .slider.has-previews .swiper-slide.swiper-slide-active,\\n .slider.has-previews .swiper-slide.swiper-slide-next,\\n .slider.has-previews .swiper-slide.swiper-slide-duplicate-prev,\\n .slider.has-previews .swiper-slide.swiper-slide-duplicate-active,\\n .slider.has-previews .swiper-slide.swiper-slide-duplicate-next {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(25% - (3 / 4) * 1rem);\\n width: calc(25% - (3 / 4) * 1rem);\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n }\\n}\\n\\n.slider__navigation {\\n cursor: pointer;\\n fill: rgba(255, 255, 255, 0.5);\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translate(0, -50%);\\n -o-transform: translate(0, -50%);\\n transform: translate(0, -50%);\\n -webkit-transition: fill 0.4s ease;\\n -o-transition: fill 0.4s ease;\\n transition: fill 0.4s ease;\\n line-height: 0;\\n z-index: 1;\\n}\\n\\n.slider__navigation .icon {\\n height: 4rem;\\n width: 4rem;\\n}\\n\\n.slider__navigation--previous {\\n left: 0;\\n}\\n\\n.slider__navigation--next {\\n right: 0;\\n}\\n\\n.slider__navigation:hover {\\n fill: #3fd8b6;\\n}\\n\\n.slider__navigation.swiper-button-disabled {\\n cursor: default;\\n fill: rgba(255, 255, 255, 0.2);\\n}\\n\\n.slider__pagination {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n margin: 1rem 0rem;\\n}\\n\\n.slider__bullet {\\n background-color: #e6e6e6;\\n border-radius: 100%;\\n -webkit-box-shadow: inset 0 0 0 0.375rem transparent;\\n box-shadow: inset 0 0 0 0.375rem transparent;\\n cursor: pointer;\\n display: block;\\n height: 0.75rem;\\n width: 0.75rem;\\n margin: 0rem 0.25rem;\\n -webkit-transition: -webkit-box-shadow 0.3s ease;\\n transition: -webkit-box-shadow 0.3s ease;\\n -o-transition: box-shadow 0.3s ease;\\n transition: box-shadow 0.3s ease;\\n transition: box-shadow 0.3s ease, -webkit-box-shadow 0.3s ease;\\n}\\n\\n.slider__bullet:hover,\\n.slider__bullet:focus {\\n -webkit-box-shadow: inset 0 0 0 0.375rem #3fd8b6;\\n box-shadow: inset 0 0 0 0.375rem #3fd8b6;\\n}\\n\\n.slider__bullet.is-active {\\n -webkit-box-shadow: inset 0 0 0 2px #3fd8b6;\\n box-shadow: inset 0 0 0 2px #3fd8b6;\\n}\\n\\n.social {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n\\n.social__link {\\n line-height: 0;\\n margin-right: 1rem;\\n}\\n\\n.social__link:last-child {\\n margin-right: 0;\\n}\\n\\n.table {\\n text-align: center;\\n}\\n\\n.table__content {\\n text-align: left;\\n width: 100%;\\n}\\n\\n.table__content th,\\n.table__content td {\\n padding: 1rem 1.5rem;\\n}\\n\\n@media (max-width: 600px) {\\n .table__content th:first-child,\\n .table__content td:first-child {\\n background-color: #303134;\\n color: #fff;\\n }\\n}\\n\\n.table__content thead {\\n background-color: #303134;\\n color: #fff;\\n}\\n\\n.table__content thead th {\\n display: none;\\n font-weight: 700;\\n}\\n\\n@media (min-width: 601px) {\\n .table__content thead th {\\n display: table-cell;\\n }\\n}\\n\\n.table__content tbody tr:nth-child(odd) {\\n background-color: #f4f4f5;\\n}\\n\\n.table__content tbody tr:nth-child(even) {\\n background-color: #eaeaea;\\n}\\n\\n.table__content tbody td:first-child {\\n font-weight: 700;\\n}\\n\\n@media (max-width: 600px) {\\n .table__content tbody td {\\n display: block;\\n }\\n\\n .table__content tbody td::before {\\n content: attr(data-th) \\\": \\\";\\n font-weight: bold;\\n display: inline-block;\\n width: 50%;\\n }\\n}\\n\\n.team__list {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) {\\n .team__list {\\n -webkit-box-pack: start;\\n -ms-flex-pack: start;\\n justify-content: flex-start;\\n }\\n}\\n\\n.team-member__head-shot {\\n overflow: hidden;\\n max-width: 8rem;\\n margin: 0 0 1.5rem;\\n}\\n\\n.team-member--teaser {\\n -ms-flex-preferred-size: 100%;\\n flex-basis: 100%;\\n color: #181d25;\\n display: block;\\n margin-bottom: 2.5rem;\\n text-align: left;\\n -ms-flex-preferred-size: calc(50% - 0.5rem);\\n flex-basis: calc(50% - 0.5rem);\\n}\\n\\n@media (min-width: 601px) {\\n .team-member--teaser {\\n -ms-flex-preferred-size: calc(50% - 1rem);\\n flex-basis: calc(50% - 1rem);\\n margin-right: 2rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .team-member--teaser {\\n -ms-flex-preferred-size: calc(33.33333% - 0.66667rem);\\n flex-basis: calc(33.33333% - 0.66667rem);\\n margin-right: 1rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 1rem;\\n }\\n\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .team-member--teaser {\\n -ms-flex-preferred-size: calc(33.33333% - 3.33333rem);\\n flex-basis: calc(33.33333% - 3.33333rem);\\n margin-right: 5rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 5rem;\\n }\\n}\\n\\n.team-member--teaser:nth-of-type(2n) {\\n margin-left: 1rem;\\n}\\n\\n@media (min-width: 601px) {\\n .team-member--teaser {\\n -ms-flex-preferred-size: calc(33.33333% - 1.33333rem);\\n flex-basis: calc(33.33333% - 1.33333rem);\\n margin-right: 2rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-left: 0;\\n margin-right: 2rem;\\n }\\n\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .team-member--teaser {\\n -ms-flex-preferred-size: calc(25% - 3.75rem);\\n flex-basis: calc(25% - 3.75rem);\\n margin-right: 5rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n),\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 5rem;\\n }\\n\\n .team-member--teaser:nth-of-type(4n) {\\n margin-right: 0;\\n }\\n}\\n\\n.team-member--teaser .team-member__title {\\n margin-top: -1rem;\\n}\\n\\n@media (min-width: 601px) {\\n .text-image .text-image__wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__image,\\n .text-image__content {\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 50%;\\n flex: 0 0 50%;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__content {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__inner {\\n padding-left: 2rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .text-image__inner {\\n padding-left: 4rem;\\n }\\n}\\n\\n.text-image__image {\\n margin-bottom: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__image {\\n margin-bottom: 0;\\n }\\n}\\n\\n.text-image__image .image-container {\\n position: relative;\\n padding-right: 1rem;\\n}\\n\\n@media (min-width: 901px) {\\n .text-image__image .image-container {\\n padding-right: 2rem;\\n }\\n}\\n\\n.text-image__image .image-container::before,\\n.text-image__image .image-container::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n content: \\\"\\\";\\n height: 100%;\\n background-color: #ececec;\\n width: 5px;\\n}\\n\\n.text-image__image .image-container::before {\\n display: none;\\n}\\n\\n.text-image__image .image-container::after {\\n background-color: #3fd8b6;\\n height: 80%;\\n}\\n\\n.text-image__image .image-container__inner {\\n position: relative;\\n width: 100%;\\n padding-bottom: 65%;\\n}\\n\\n.text-image__image .image-container__inner img {\\n -webkit-box-shadow: 0 0 20px #cecece;\\n box-shadow: 0 0 20px #cecece;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image {\\n -webkit-box-ordinal-group: 3;\\n -ms-flex-order: 2;\\n order: 2;\\n}\\n\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container {\\n padding-left: 1rem;\\n}\\n\\n@media (min-width: 901px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container {\\n padding-left: 2rem;\\n }\\n}\\n\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container::before,\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container::after {\\n left: 0;\\n right: auto;\\n}\\n\\n@media (min-width: 601px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__inner {\\n padding-left: 0;\\n padding-right: 2rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__inner {\\n padding-right: 4rem;\\n }\\n}\\n\\n.tiles {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n\\n@media (min-width: 601px) {\\n .tiles {\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n }\\n}\\n\\n.tiles__image {\\n position: relative;\\n height: 100vw;\\n}\\n\\n@media (max-width: 600px) {\\n .tiles__image {\\n -webkit-box-ordinal-group: 3;\\n -ms-flex-order: 2;\\n order: 2;\\n }\\n}\\n\\n@media (max-width: 1200px) {\\n .tiles__image {\\n min-height: 49vw;\\n }\\n\\n .tiles__image img {\\n -o-object-fit: cover;\\n object-fit: cover;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .tiles__image {\\n height: auto;\\n width: 50%;\\n }\\n}\\n\\n.tiles[data-alignment=\\\"left\\\"] .tiles__image {\\n -webkit-box-ordinal-group: 3;\\n -ms-flex-order: 2;\\n order: 2;\\n}\\n\\n.tiles__inner {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) and (max-width: 900px) {\\n .tiles__inner {\\n padding: 2rem;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .tiles__inner {\\n width: 50%;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .tiles__inner {\\n padding-right: 8rem;\\n padding-left: 8rem;\\n }\\n}\\n\\nh1 + .button,\\nh2 + .button,\\nh3 + .button,\\nh4 + .button,\\nh5 + .button,\\nh6 + .button,\\np + .button,\\nul + .button,\\nol + .button {\\n margin-top: 3.5rem;\\n}\\n\\n.small {\\n font-size: 0.75rem;\\n}\\n\\n.u-box {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .u-box {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .u-box {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.u-box > :last-child {\\n margin-bottom: 0;\\n}\\n\\n/* ==========================================================================\\n #CLEARFIX\\n ========================================================================== */\\n\\n/**\\n * Attach our clearfix mixin to a utility class.\\n */\\n\\n.u-clearfix::after {\\n content: \\\"\\\";\\n display: block;\\n clear: both;\\n}\\n\\n/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n\\n.u-hidden-visually {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n -webkit-clip-path: inset(50%) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 1px !important;\\n}\\n\\n/**\\n * Hide visually and from screen readers.\\n */\\n\\n.u-hidden {\\n display: none !important;\\n}\\n\\n/**\\n * Hide on small screens\\n */\\n\\n@media (max-width: 900px) {\\n .u-hidden-small {\\n display: none;\\n }\\n}\\n\\n/**\\n * Hide on large screens\\n */\\n\\n@media (min-width: 901px) {\\n .u-hidden-large {\\n display: none;\\n }\\n}\\n\\n.u-text-align--left {\\n text-align: left;\\n}\\n\\n.u-text-align--center {\\n text-align: center;\\n}\\n\\n.u-text-align--right {\\n text-align: right;\\n}\\n\\n/* ==========================================================================\\n #WRAPPER\\n ========================================================================== */\\n\\n/**\\n * Page-level constraining and wrapping elements.\\n */\\n\\n.u-content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 40rem;\\n}\\n\\n.u-content picture {\\n margin-bottom: 1.5rem;\\n}\\n\\n.u-wrapper {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .u-wrapper {\\n max-width: 70rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .u-wrapper {\\n max-width: 80rem;\\n }\\n}\\n\\n.u-wrapper--narrow {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 70rem;\\n}\\n\\n@media (min-width: 1801px) {\\n .u-wrapper--narrow {\\n max-width: 80rem;\\n }\\n}\\n\\n.u-box {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .u-box {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .u-box {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.u-box > :last-child {\\n margin-bottom: 0;\\n}\\n\\n/*!\\n * baguetteBox.js\\n * @author feimosi\\n * @version 1.10.0\\n * @url https://github.com/feimosi/baguetteBox.js\\n */\\n\\n#baguetteBox-overlay {\\n display: none;\\n opacity: 0;\\n position: fixed;\\n overflow: hidden;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: 1000000;\\n background-color: #222;\\n background-color: rgba(0, 0, 0, 0.8);\\n -webkit-transition: opacity .5s ease;\\n -o-transition: opacity .5s ease;\\n transition: opacity .5s ease;\\n}\\n\\n#baguetteBox-overlay.visible {\\n opacity: 1;\\n}\\n\\n#baguetteBox-overlay .full-image {\\n display: inline-block;\\n position: relative;\\n width: 100%;\\n height: 100%;\\n text-align: center;\\n}\\n\\n#baguetteBox-overlay .full-image figure {\\n display: inline;\\n margin: 0;\\n height: 100%;\\n}\\n\\n#baguetteBox-overlay .full-image img {\\n display: inline-block;\\n width: auto;\\n height: auto;\\n max-height: 100%;\\n max-width: 100%;\\n vertical-align: middle;\\n -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\\n}\\n\\n#baguetteBox-overlay .full-image figcaption {\\n display: block;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n text-align: center;\\n line-height: 1.8;\\n white-space: normal;\\n color: #ccc;\\n background-color: #000;\\n background-color: rgba(0, 0, 0, 0.6);\\n font-family: sans-serif;\\n}\\n\\n#baguetteBox-overlay .full-image:before {\\n content: \\\"\\\";\\n display: inline-block;\\n height: 50%;\\n width: 1px;\\n margin-right: -1px;\\n}\\n\\n#baguetteBox-slider {\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100%;\\n width: 100%;\\n white-space: nowrap;\\n -webkit-transition: left .4s ease,-webkit-transform .4s ease;\\n transition: left .4s ease,-webkit-transform .4s ease;\\n -o-transition: left .4s ease,-o-transform .4s ease;\\n transition: left .4s ease,transform .4s ease;\\n transition: left .4s ease,transform .4s ease,-webkit-transform .4s ease,-o-transform .4s ease;\\n transition: left .4s ease,transform .4s ease,-webkit-transform .4s ease;\\n}\\n\\n#baguetteBox-slider.bounce-from-right {\\n -webkit-animation: bounceFromRight .4s ease-out;\\n -o-animation: bounceFromRight .4s ease-out;\\n animation: bounceFromRight .4s ease-out;\\n}\\n\\n#baguetteBox-slider.bounce-from-left {\\n -webkit-animation: bounceFromLeft .4s ease-out;\\n -o-animation: bounceFromLeft .4s ease-out;\\n animation: bounceFromLeft .4s ease-out;\\n}\\n\\n@-webkit-keyframes bounceFromRight {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: -30px;\\n }\\n}\\n\\n@-o-keyframes bounceFromRight {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: -30px;\\n }\\n}\\n\\n@keyframes bounceFromRight {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: -30px;\\n }\\n}\\n\\n@-webkit-keyframes bounceFromLeft {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: 30px;\\n }\\n}\\n\\n@-o-keyframes bounceFromLeft {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: 30px;\\n }\\n}\\n\\n@keyframes bounceFromLeft {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: 30px;\\n }\\n}\\n\\n.baguetteBox-button#next-button,\\n.baguetteBox-button#previous-button {\\n top: 50%;\\n top: calc(50% - 30px);\\n width: 44px;\\n height: 60px;\\n}\\n\\n.baguetteBox-button {\\n position: absolute;\\n cursor: pointer;\\n outline: 0;\\n padding: 0;\\n margin: 0;\\n border: 0;\\n border-radius: 15%;\\n background-color: #323232;\\n background-color: rgba(50, 50, 50, 0.5);\\n color: #ddd;\\n font: 1.6em sans-serif;\\n -webkit-transition: background-color .4s ease;\\n -o-transition: background-color .4s ease;\\n transition: background-color .4s ease;\\n}\\n\\n.baguetteBox-button:focus,\\n.baguetteBox-button:hover {\\n background-color: rgba(50, 50, 50, 0.9);\\n}\\n\\n.baguetteBox-button#next-button {\\n right: 2%;\\n}\\n\\n.baguetteBox-button#previous-button {\\n left: 2%;\\n}\\n\\n.baguetteBox-button#close-button {\\n top: 20px;\\n right: 2%;\\n right: calc(2% + 6px);\\n width: 30px;\\n height: 30px;\\n}\\n\\n.baguetteBox-button svg {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.baguetteBox-spinner {\\n width: 40px;\\n height: 40px;\\n display: inline-block;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -20px;\\n margin-left: -20px;\\n}\\n\\n.baguetteBox-double-bounce1,\\n.baguetteBox-double-bounce2 {\\n width: 100%;\\n height: 100%;\\n border-radius: 50%;\\n background-color: #fff;\\n opacity: .6;\\n position: absolute;\\n top: 0;\\n left: 0;\\n -webkit-animation: bounce 2s infinite ease-in-out;\\n -o-animation: bounce 2s infinite ease-in-out;\\n animation: bounce 2s infinite ease-in-out;\\n}\\n\\n.baguetteBox-double-bounce2 {\\n -webkit-animation-delay: -1s;\\n -o-animation-delay: -1s;\\n animation-delay: -1s;\\n}\\n\\n@-webkit-keyframes bounce {\\n 0%, 100% {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n }\\n\\n 50% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n}\\n\\n@-o-keyframes bounce {\\n 0%, 100% {\\n -webkit-transform: scale(0);\\n -o-transform: scale(0);\\n transform: scale(0);\\n }\\n\\n 50% {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n }\\n}\\n\\n@keyframes bounce {\\n 0%, 100% {\\n -webkit-transform: scale(0);\\n -o-transform: scale(0);\\n transform: scale(0);\\n }\\n\\n 50% {\\n -webkit-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1);\\n }\\n}\\n\\n\", \"\", {\"version\":3,\"sources\":[\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/main.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/main.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/main.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/tools/_tools.animation.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/tools/_tools.hide.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/settings/_settings.constants.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/settings/_settings.global.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/node_modules/swiper/dist/css/swiper.min.css\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/node_modules/slim-select/dist/slimselect.min.css\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/node_modules/normalize.css/normalize.css\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/generic/_generic.reset.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/generic/_generic.shared.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/generic/_generic.print.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.block.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.box.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.list.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/elements/_elements.blockquote.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/elements/_elements.form.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.form.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/elements/_elements.images.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/elements/_elements.page.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/elements/_elements.tables.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/elements/_elements.type.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/node_modules/breakpoint-sass/stylesheets/_breakpoint.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.type.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.accordion.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.archive.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.background-image.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.banner.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.overlay.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.button.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.button.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.columns.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.company.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.component.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.contact.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.featured-bar.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.featured-blocks.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.filter.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.flyout.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.footer.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.form.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.gallery.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.hamburger.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.header.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.hero.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/objects/_objects.wrapper.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.image.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.list.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.map.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.media.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.meta.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.nav.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.page.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.pagination.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/tools/_tools.symbols.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.post.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.slider.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.social.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.table.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.team.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.text-and-image.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.tiles.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/components/_components.type.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/utilities/_utilities.box.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/utilities/_utilities.clearfix.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/tools/_tools.clearfix.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/utilities/_utilities.hide.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/utilities/_utilities.type.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/resources/assets/styles/utilities/_utilities.wrapper.scss\",\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/styles/node_modules/baguettebox.js/dist/baguetteBox.min.css\"],\"names\":[],\"mappings\":\"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uBAAA;EAAyB,OAAA;EACzB,WAAA;EAAa,OAAA;CPs3Cd;;AOn3CD;;GPu3CG;;AFtUH;;ES3iCE,aAAA;CPs3CD;;AOn3CD;;;GPw3CG;;AFxUH;ES1iCE,8BAAA;EAAgC,OAAA;EAChC,qBAAA;EAAuB,OAAA;CPw3CxB;;AOr3CD;;GPy3CG;;AF1UH;ES1iCE,yBAAA;CPw3CD;;AOr3CD;;;GP03CG;;AOr3CH;EACE,2BAAA;EAA6B,OAAA;EAC7B,cAAA;EAAgB,OAAA;CP03CjB;;AOv3CD;gFP03CgF;;AOv3ChF;;GP23CG;;AOv3CH;EACE,eAAA;CP03CD;;AOv3CD;;GP23CG;;AOv3CH;EACE,mBAAA;CP03CD;;AOv3CD;gFP03CgF;;AOv3ChF;;GP23CG;;AOv3CH;EACE,cAAA;CP03CD;;AOv3CD;;GP23CG;;AFtVH;EShiCE,cAAA;CP03CD;;AQ7sDD;;gFRitDgF;;AQ7sDhF;;GRitDG;;AQ7sDH;;;;;;;;;;;;;;;;;;EAOE,UAAA;EACA,WAAA;CR2tDD;;AQxtDD;;GR4tDG;;AQxtDH;;EAGI,iBAAA;CR0tDH;;AQttDD;;GR0tDG;;AQttDH;EACE,0BAAA;EACA,kBAAA;CRytDD;;AQttDD;;;GR2tDG;;AQttDH;EACE,aAAA;EAAe,SAAA;EACf,UAAA;CR0tDD;;ASxwDD;;gFT4wDgF;;ASxwDhF;;GT4wDG;;ASxwDH;;;;;;;;;;;;;;;EAOE,oBAAA;CTmxDD;;AS1xDD;;;;;;;;;;;;;;;EAUI,iBAAA;CTkyDH;;AS9xDD;;GTkyDG;;AS9xDH;;;EACE,kBAAA;CTmyDD;;AU9zDD;;gFVk0DgF;;AU9zDhF;;;;GVo0DG;;AU9zDF;EACC;;KVk0DG;;EU9zDH;;;IACE,mCAAA;IACA,uBAAA;IAAyB,SAAA;IACzB,oCAAA;YAAA,4BAAA;IACA,6BAAA;GVo0DD;;EUj0DD;;IACE,2BAAA;GVq0DD;;EUl0DD;IACE,6BAAA;GVq0DD;;EUl0DD;IACE,8BAAA;GVq0DD;;EUl0DD;;;KVu0DG;;EUl0DH;;IAEE,YAAA;GVq0DD;;EUl0DD;;IAEE,uBAAA;IACA,yBAAA;GVq0DD;;EUl0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\",\"file\":\"main.scss\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/* ==========================================================================\\n L E A P\\n ========================================================================== */\\n@keyframes inFromRight {\\n from {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0); }\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0); } }\\n\\n@keyframes outToRight {\\n to {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0); } }\\n\\n@keyframes inFromLeft {\\n from {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0); }\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0); } }\\n\\n@keyframes outToLeft {\\n to {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0); } }\\n\\n.is-magic {\\n transform: translateY(50px);\\n transition-property: transform, opacity;\\n transition-duration: 1s;\\n transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);\\n opacity: 0 !important;\\n transition-delay: 0s; }\\n .is-magic.is-loaded {\\n opacity: 1 !important;\\n transform: translateY(0); }\\n\\n.is-magic.delay--1.is-loaded {\\n transition-delay: 0.3s !important; }\\n\\n.is-magic.delay--2.is-loaded {\\n transition-delay: 0.6s !important; }\\n\\n.is-magic.delay--3.is-loaded {\\n transition-delay: 0.9s !important; }\\n\\n.is-magic.delay--4.is-loaded {\\n transition-delay: 1.2s !important; }\\n\\n.is-magic.delay--5.is-loaded {\\n transition-delay: 1.5s !important; }\\n\\n.is-magic.delay--6.is-loaded {\\n transition-delay: 1.8s !important; }\\n\\n.is-magic.delay--7.is-loaded {\\n transition-delay: 2.1s !important; }\\n\\n.is-magic.delay--8.is-loaded {\\n transition-delay: 2.4s !important; }\\n\\n.is-magic.delay--9.is-loaded {\\n transition-delay: 2.7s !important; }\\n\\n.is-magic.delay--10.is-loaded {\\n transition-delay: 3s !important; }\\n\\n.is-magic.delay--11.is-loaded {\\n transition-delay: 3.3s !important; }\\n\\n.is-magic.delay--12.is-loaded {\\n transition-delay: 3.6s !important; }\\n\\n.is-magic.delay--13.is-loaded {\\n transition-delay: 3.9s !important; }\\n\\n.is-magic.delay--14.is-loaded {\\n transition-delay: 4.2s !important; }\\n\\n.is-magic.delay--15.is-loaded {\\n transition-delay: 4.5s !important; }\\n\\n.is-magic.delay--16.is-loaded {\\n transition-delay: 4.8s !important; }\\n\\n.is-magic.delay--17.is-loaded {\\n transition-delay: 5.1s !important; }\\n\\n.is-magic.delay--18.is-loaded {\\n transition-delay: 5.4s !important; }\\n\\n.is-magic.delay--19.is-loaded {\\n transition-delay: 5.7s !important; }\\n\\n.is-magic.delay--20.is-loaded {\\n transition-delay: 6s !important; }\\n\\n.is-magic.delay--21.is-loaded {\\n transition-delay: 6.3s !important; }\\n\\n.is-magic.delay--22.is-loaded {\\n transition-delay: 6.6s !important; }\\n\\n.is-magic.delay--23.is-loaded {\\n transition-delay: 6.9s !important; }\\n\\n.is-magic.delay--24.is-loaded {\\n transition-delay: 7.2s !important; }\\n\\n.is-magic.delay--25.is-loaded {\\n transition-delay: 7.5s !important; }\\n\\n.is-magic.delay--26.is-loaded {\\n transition-delay: 7.8s !important; }\\n\\n.is-magic.delay--27.is-loaded {\\n transition-delay: 8.1s !important; }\\n\\n.is-magic.delay--28.is-loaded {\\n transition-delay: 8.4s !important; }\\n\\n.is-magic.delay--29.is-loaded {\\n transition-delay: 8.7s !important; }\\n\\n.is-magic.delay--30.is-loaded {\\n transition-delay: 9s !important; }\\n\\n.is-magic.delay--31.is-loaded {\\n transition-delay: 9.3s !important; }\\n\\n.is-magic.delay--32.is-loaded {\\n transition-delay: 9.6s !important; }\\n\\n.is-magic.delay--33.is-loaded {\\n transition-delay: 9.9s !important; }\\n\\n.is-magic.delay--34.is-loaded {\\n transition-delay: 10.2s !important; }\\n\\n.is-magic.delay--35.is-loaded {\\n transition-delay: 10.5s !important; }\\n\\n.is-magic.delay--36.is-loaded {\\n transition-delay: 10.8s !important; }\\n\\n.is-magic.delay--37.is-loaded {\\n transition-delay: 11.1s !important; }\\n\\n.is-magic.delay--38.is-loaded {\\n transition-delay: 11.4s !important; }\\n\\n.is-magic.delay--39.is-loaded {\\n transition-delay: 11.7s !important; }\\n\\n.is-magic.delay--40.is-loaded {\\n transition-delay: 12s !important; }\\n\\n.is-magic.delay--41.is-loaded {\\n transition-delay: 12.3s !important; }\\n\\n.is-magic.delay--42.is-loaded {\\n transition-delay: 12.6s !important; }\\n\\n.is-magic.delay--43.is-loaded {\\n transition-delay: 12.9s !important; }\\n\\n.is-magic.delay--44.is-loaded {\\n transition-delay: 13.2s !important; }\\n\\n.is-magic.delay--45.is-loaded {\\n transition-delay: 13.5s !important; }\\n\\n.is-magic.delay--46.is-loaded {\\n transition-delay: 13.8s !important; }\\n\\n.is-magic.delay--47.is-loaded {\\n transition-delay: 14.1s !important; }\\n\\n.is-magic.delay--48.is-loaded {\\n transition-delay: 14.4s !important; }\\n\\n/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n/**\\n * Spacing\\n */\\n/**\\n * Typography\\n */\\n/**\\n * Transitions\\n */\\n/**\\n * Breakpoints\\n */\\n/**\\n * Palette\\n */\\n/**\\n * Colours\\n */\\n/**\\n * Typography\\n */\\n/**\\n * Widths\\n */\\n/* Heights */\\n/**\\n * Swiper 4.1.6\\n * Most modern mobile touch slider and framework with hardware accelerated transitions\\n * http://www.idangero.us/swiper/\\n *\\n * Copyright 2014-2018 Vladimir Kharlampidi\\n *\\n * Released under the MIT License\\n *\\n * Released on: February 11, 2018\\n */\\n.swiper-container {\\n margin: 0 auto;\\n position: relative;\\n overflow: hidden;\\n list-style: none;\\n padding: 0;\\n z-index: 1; }\\n\\n.swiper-container-no-flexbox .swiper-slide {\\n float: left; }\\n\\n.swiper-container-vertical > .swiper-wrapper {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -webkit-flex-direction: column;\\n -ms-flex-direction: column;\\n flex-direction: column; }\\n\\n.swiper-wrapper {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-transition-property: -webkit-transform;\\n transition-property: -webkit-transform;\\n -o-transition-property: transform;\\n transition-property: transform;\\n transition-property: transform,-webkit-transform;\\n -webkit-box-sizing: content-box;\\n box-sizing: content-box; }\\n\\n.swiper-container-android .swiper-slide, .swiper-wrapper {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0); }\\n\\n.swiper-container-multirow > .swiper-wrapper {\\n -webkit-flex-wrap: wrap;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap; }\\n\\n.swiper-container-free-mode > .swiper-wrapper {\\n -webkit-transition-timing-function: ease-out;\\n -o-transition-timing-function: ease-out;\\n transition-timing-function: ease-out;\\n margin: 0 auto; }\\n\\n.swiper-slide {\\n -webkit-flex-shrink: 0;\\n -ms-flex-negative: 0;\\n flex-shrink: 0;\\n width: 100%;\\n height: 100%;\\n position: relative;\\n -webkit-transition-property: -webkit-transform;\\n transition-property: -webkit-transform;\\n -o-transition-property: transform;\\n transition-property: transform;\\n transition-property: transform,-webkit-transform; }\\n\\n.swiper-invisible-blank-slide {\\n visibility: hidden; }\\n\\n.swiper-container-autoheight, .swiper-container-autoheight .swiper-slide {\\n height: auto; }\\n\\n.swiper-container-autoheight .swiper-wrapper {\\n -webkit-box-align: start;\\n -webkit-align-items: flex-start;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n -webkit-transition-property: height,-webkit-transform;\\n transition-property: height,-webkit-transform;\\n -o-transition-property: transform,height;\\n transition-property: transform,height;\\n transition-property: transform,height,-webkit-transform; }\\n\\n.swiper-container-3d {\\n -webkit-perspective: 1200px;\\n perspective: 1200px; }\\n\\n.swiper-container-3d .swiper-cube-shadow, .swiper-container-3d .swiper-slide, .swiper-container-3d .swiper-slide-shadow-bottom, .swiper-container-3d .swiper-slide-shadow-left, .swiper-container-3d .swiper-slide-shadow-right, .swiper-container-3d .swiper-slide-shadow-top, .swiper-container-3d .swiper-wrapper {\\n -webkit-transform-style: preserve-3d;\\n transform-style: preserve-3d; }\\n\\n.swiper-container-3d .swiper-slide-shadow-bottom, .swiper-container-3d .swiper-slide-shadow-left, .swiper-container-3d .swiper-slide-shadow-right, .swiper-container-3d .swiper-slide-shadow-top {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n z-index: 10; }\\n\\n.swiper-container-3d .swiper-slide-shadow-left {\\n background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), transparent); }\\n\\n.swiper-container-3d .swiper-slide-shadow-right {\\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent); }\\n\\n.swiper-container-3d .swiper-slide-shadow-top {\\n background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), transparent); }\\n\\n.swiper-container-3d .swiper-slide-shadow-bottom {\\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), transparent); }\\n\\n.swiper-container-wp8-horizontal, .swiper-container-wp8-horizontal > .swiper-wrapper {\\n -ms-touch-action: pan-y;\\n touch-action: pan-y; }\\n\\n.swiper-container-wp8-vertical, .swiper-container-wp8-vertical > .swiper-wrapper {\\n -ms-touch-action: pan-x;\\n touch-action: pan-x; }\\n\\n.swiper-button-next, .swiper-button-prev {\\n position: absolute;\\n top: 50%;\\n width: 27px;\\n height: 44px;\\n margin-top: -22px;\\n z-index: 10;\\n cursor: pointer;\\n background-size: 27px 44px;\\n background-position: center;\\n background-repeat: no-repeat; }\\n\\n.swiper-button-next.swiper-button-disabled, .swiper-button-prev.swiper-button-disabled {\\n opacity: .35;\\n cursor: auto;\\n pointer-events: none; }\\n\\n.swiper-button-prev, .swiper-container-rtl .swiper-button-next {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");\\n left: 10px;\\n right: auto; }\\n\\n.swiper-button-next, .swiper-container-rtl .swiper-button-prev {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");\\n right: 10px;\\n left: auto; }\\n\\n.swiper-button-prev.swiper-button-white, .swiper-container-rtl .swiper-button-next.swiper-button-white {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\"); }\\n\\n.swiper-button-next.swiper-button-white, .swiper-container-rtl .swiper-button-prev.swiper-button-white {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\"); }\\n\\n.swiper-button-prev.swiper-button-black, .swiper-container-rtl .swiper-button-next.swiper-button-black {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\"); }\\n\\n.swiper-button-next.swiper-button-black, .swiper-container-rtl .swiper-button-prev.swiper-button-black {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\"); }\\n\\n.swiper-button-lock {\\n display: none; }\\n\\n.swiper-pagination {\\n position: absolute;\\n text-align: center;\\n -webkit-transition: .3s opacity;\\n -o-transition: .3s opacity;\\n transition: .3s opacity;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n z-index: 10; }\\n\\n.swiper-pagination.swiper-pagination-hidden {\\n opacity: 0; }\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets, .swiper-pagination-custom, .swiper-pagination-fraction {\\n bottom: 10px;\\n left: 0;\\n width: 100%; }\\n\\n.swiper-pagination-bullets-dynamic {\\n overflow: hidden;\\n font-size: 0; }\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transform: scale(0.33);\\n -ms-transform: scale(0.33);\\n transform: scale(0.33);\\n position: relative; }\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\\n -webkit-transform: scale(1);\\n -ms-transform: scale(1);\\n transform: scale(1); }\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\\n -webkit-transform: scale(1);\\n -ms-transform: scale(1);\\n transform: scale(1); }\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\\n -webkit-transform: scale(0.66);\\n -ms-transform: scale(0.66);\\n transform: scale(0.66); }\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\\n -webkit-transform: scale(0.33);\\n -ms-transform: scale(0.33);\\n transform: scale(0.33); }\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\\n -webkit-transform: scale(0.66);\\n -ms-transform: scale(0.66);\\n transform: scale(0.66); }\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\\n -webkit-transform: scale(0.33);\\n -ms-transform: scale(0.33);\\n transform: scale(0.33); }\\n\\n.swiper-pagination-bullet {\\n width: 8px;\\n height: 8px;\\n display: inline-block;\\n border-radius: 100%;\\n background: #000;\\n opacity: .2; }\\n\\nbutton.swiper-pagination-bullet {\\n border: none;\\n margin: 0;\\n padding: 0;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none; }\\n\\n.swiper-pagination-clickable .swiper-pagination-bullet {\\n cursor: pointer; }\\n\\n.swiper-pagination-bullet-active {\\n opacity: 1;\\n background: #007aff; }\\n\\n.swiper-container-vertical > .swiper-pagination-bullets {\\n right: 10px;\\n top: 50%;\\n -webkit-transform: translate3d(0, -50%, 0);\\n transform: translate3d(0, -50%, 0); }\\n\\n.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 6px 0;\\n display: block; }\\n\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n width: 8px; }\\n\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n display: inline-block;\\n -webkit-transition: .2s top,.2s -webkit-transform;\\n transition: .2s top,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s top;\\n transition: .2s transform,.2s top;\\n transition: .2s transform,.2s top,.2s -webkit-transform; }\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 0 4px; }\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n left: 50%;\\n -webkit-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n transform: translateX(-50%);\\n white-space: nowrap; }\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transition: .2s left,.2s -webkit-transform;\\n transition: .2s left,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s left;\\n transition: .2s transform,.2s left;\\n transition: .2s transform,.2s left,.2s -webkit-transform; }\\n\\n.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transition: .2s right,.2s -webkit-transform;\\n transition: .2s right,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s right;\\n transition: .2s transform,.2s right;\\n transition: .2s transform,.2s right,.2s -webkit-transform; }\\n\\n.swiper-pagination-progressbar {\\n background: rgba(0, 0, 0, 0.25);\\n position: absolute; }\\n\\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n background: #007aff;\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n -webkit-transform: scale(0);\\n -ms-transform: scale(0);\\n transform: scale(0);\\n -webkit-transform-origin: left top;\\n -ms-transform-origin: left top;\\n transform-origin: left top; }\\n\\n.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n -webkit-transform-origin: right top;\\n -ms-transform-origin: right top;\\n transform-origin: right top; }\\n\\n.swiper-container-horizontal > .swiper-pagination-progressbar {\\n width: 100%;\\n height: 4px;\\n left: 0;\\n top: 0; }\\n\\n.swiper-container-vertical > .swiper-pagination-progressbar {\\n width: 4px;\\n height: 100%;\\n left: 0;\\n top: 0; }\\n\\n.swiper-pagination-white .swiper-pagination-bullet-active {\\n background: #fff; }\\n\\n.swiper-pagination-progressbar.swiper-pagination-white {\\n background: rgba(255, 255, 255, 0.25); }\\n\\n.swiper-pagination-progressbar.swiper-pagination-white .swiper-pagination-progressbar-fill {\\n background: #fff; }\\n\\n.swiper-pagination-black .swiper-pagination-bullet-active {\\n background: #000; }\\n\\n.swiper-pagination-progressbar.swiper-pagination-black {\\n background: rgba(0, 0, 0, 0.25); }\\n\\n.swiper-pagination-progressbar.swiper-pagination-black .swiper-pagination-progressbar-fill {\\n background: #000; }\\n\\n.swiper-pagination-lock {\\n display: none; }\\n\\n.swiper-scrollbar {\\n border-radius: 10px;\\n position: relative;\\n -ms-touch-action: none;\\n background: rgba(0, 0, 0, 0.1); }\\n\\n.swiper-container-horizontal > .swiper-scrollbar {\\n position: absolute;\\n left: 1%;\\n bottom: 3px;\\n z-index: 50;\\n height: 5px;\\n width: 98%; }\\n\\n.swiper-container-vertical > .swiper-scrollbar {\\n position: absolute;\\n right: 3px;\\n top: 1%;\\n z-index: 50;\\n width: 5px;\\n height: 98%; }\\n\\n.swiper-scrollbar-drag {\\n height: 100%;\\n width: 100%;\\n position: relative;\\n background: rgba(0, 0, 0, 0.5);\\n border-radius: 10px;\\n left: 0;\\n top: 0; }\\n\\n.swiper-scrollbar-cursor-drag {\\n cursor: move; }\\n\\n.swiper-scrollbar-lock {\\n display: none; }\\n\\n.swiper-zoom-container {\\n width: 100%;\\n height: 100%;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -webkit-justify-content: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -webkit-align-items: center;\\n -ms-flex-align: center;\\n align-items: center;\\n text-align: center; }\\n\\n.swiper-zoom-container > canvas, .swiper-zoom-container > img, .swiper-zoom-container > svg {\\n max-width: 100%;\\n max-height: 100%;\\n -o-object-fit: contain;\\n object-fit: contain; }\\n\\n.swiper-slide-zoomed {\\n cursor: move; }\\n\\n.swiper-lazy-preloader {\\n width: 42px;\\n height: 42px;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -21px;\\n margin-top: -21px;\\n z-index: 10;\\n -webkit-transform-origin: 50%;\\n -ms-transform-origin: 50%;\\n transform-origin: 50%;\\n -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite;\\n animation: swiper-preloader-spin 1s steps(12, end) infinite; }\\n\\n.swiper-lazy-preloader:after {\\n display: block;\\n content: '';\\n width: 100%;\\n height: 100%;\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\");\\n background-position: 50%;\\n background-size: 100%;\\n background-repeat: no-repeat; }\\n\\n.swiper-lazy-preloader-white:after {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\"); }\\n\\n@-webkit-keyframes swiper-preloader-spin {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n@keyframes swiper-preloader-spin {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n.swiper-container .swiper-notification {\\n position: absolute;\\n left: 0;\\n top: 0;\\n pointer-events: none;\\n opacity: 0;\\n z-index: -1000; }\\n\\n.swiper-container-fade.swiper-container-free-mode .swiper-slide {\\n -webkit-transition-timing-function: ease-out;\\n -o-transition-timing-function: ease-out;\\n transition-timing-function: ease-out; }\\n\\n.swiper-container-fade .swiper-slide {\\n pointer-events: none;\\n -webkit-transition-property: opacity;\\n -o-transition-property: opacity;\\n transition-property: opacity; }\\n\\n.swiper-container-fade .swiper-slide .swiper-slide {\\n pointer-events: none; }\\n\\n.swiper-container-fade .swiper-slide-active, .swiper-container-fade .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto; }\\n\\n.swiper-container-cube {\\n overflow: visible; }\\n\\n.swiper-container-cube .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1;\\n visibility: hidden;\\n -webkit-transform-origin: 0 0;\\n -ms-transform-origin: 0 0;\\n transform-origin: 0 0;\\n width: 100%;\\n height: 100%; }\\n\\n.swiper-container-cube .swiper-slide .swiper-slide {\\n pointer-events: none; }\\n\\n.swiper-container-cube.swiper-container-rtl .swiper-slide {\\n -webkit-transform-origin: 100% 0;\\n -ms-transform-origin: 100% 0;\\n transform-origin: 100% 0; }\\n\\n.swiper-container-cube .swiper-slide-active, .swiper-container-cube .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto; }\\n\\n.swiper-container-cube .swiper-slide-active, .swiper-container-cube .swiper-slide-next, .swiper-container-cube .swiper-slide-next + .swiper-slide, .swiper-container-cube .swiper-slide-prev {\\n pointer-events: auto;\\n visibility: visible; }\\n\\n.swiper-container-cube .swiper-slide-shadow-bottom, .swiper-container-cube .swiper-slide-shadow-left, .swiper-container-cube .swiper-slide-shadow-right, .swiper-container-cube .swiper-slide-shadow-top {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden; }\\n\\n.swiper-container-cube .swiper-cube-shadow {\\n position: absolute;\\n left: 0;\\n bottom: 0;\\n width: 100%;\\n height: 100%;\\n background: #000;\\n opacity: .6;\\n -webkit-filter: blur(50px);\\n filter: blur(50px);\\n z-index: 0; }\\n\\n.swiper-container-flip {\\n overflow: visible; }\\n\\n.swiper-container-flip .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1; }\\n\\n.swiper-container-flip .swiper-slide .swiper-slide {\\n pointer-events: none; }\\n\\n.swiper-container-flip .swiper-slide-active, .swiper-container-flip .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto; }\\n\\n.swiper-container-flip .swiper-slide-shadow-bottom, .swiper-container-flip .swiper-slide-shadow-left, .swiper-container-flip .swiper-slide-shadow-right, .swiper-container-flip .swiper-slide-shadow-top {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden; }\\n\\n.swiper-container-coverflow .swiper-wrapper {\\n -ms-perspective: 1200px; }\\n\\n.ss-main {\\n position: relative;\\n display: inline-block;\\n user-select: none;\\n color: #666;\\n width: 100%; }\\n\\n.ss-main .ss-single-selected {\\n display: flex;\\n cursor: pointer;\\n width: 100%;\\n height: 30px;\\n padding: 6px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n box-sizing: border-box;\\n transition: background-color .3s; }\\n\\n.ss-main .ss-single-selected.ss-disabled {\\n background-color: #dcdee2;\\n cursor: not-allowed; }\\n\\n.ss-main .ss-single-selected.ss-open-above {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.ss-main .ss-single-selected.ss-open-below {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.ss-main .ss-single-selected .placeholder {\\n flex: 1 1 100%;\\n text-align: left;\\n width: calc(100% - 30px);\\n line-height: 1em;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n\\n.ss-main .ss-single-selected .placeholder, .ss-main .ss-single-selected .placeholder * {\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.ss-main .ss-single-selected .placeholder * {\\n width: auto; }\\n\\n.ss-main .ss-single-selected .placeholder .ss-disabled {\\n cursor: pointer;\\n color: #dcdee2; }\\n\\n.ss-main .ss-single-selected .ss-deselect {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n flex: 0 1 auto;\\n margin: 0 5px;\\n font-weight: 700;\\n font-family: Arial,Helvetica,sans-serif; }\\n\\n.ss-main .ss-single-selected .ss-deselect.ss-hide {\\n display: none; }\\n\\n.ss-main .ss-single-selected .ss-arrow {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n flex: 0 1 auto;\\n margin: 0 5px; }\\n\\n.ss-main .ss-single-selected .ss-arrow span {\\n border: solid #666;\\n border-width: 0 2px 2px 0;\\n display: inline-block;\\n padding: 3px;\\n transition: transform .2s,margin .2s; }\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-up {\\n transform: rotate(-135deg);\\n margin: 3px 0 0; }\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-down {\\n transform: rotate(45deg);\\n margin: -3px 0 0; }\\n\\n.ss-main .ss-multi-selected {\\n display: flex;\\n flex-direction: row;\\n cursor: pointer;\\n min-height: 30px;\\n width: 100%;\\n padding: 0 0 0 3px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n box-sizing: border-box;\\n transition: background-color .3s; }\\n\\n.ss-main .ss-multi-selected.ss-disabled {\\n background-color: #dcdee2;\\n cursor: not-allowed; }\\n\\n.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled {\\n color: #666; }\\n\\n.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete {\\n cursor: not-allowed; }\\n\\n.ss-main .ss-multi-selected.ss-open-above {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.ss-main .ss-multi-selected.ss-open-below {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.ss-main .ss-multi-selected .ss-values {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start;\\n flex: 1 1 100%;\\n width: calc(100% - 30px); }\\n\\n.ss-main .ss-multi-selected .ss-values .ss-disabled {\\n display: flex;\\n padding: 4px 5px;\\n margin: 2px 0;\\n line-height: 1em;\\n align-items: center;\\n width: 100%;\\n color: #dcdee2;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n@keyframes scaleIn {\\n 0% {\\n transform: scale(0);\\n opacity: 0; }\\n to {\\n transform: scale(1);\\n opacity: 1; } }\\n\\n@keyframes scaleOut {\\n 0% {\\n transform: scale(1);\\n opacity: 1; }\\n to {\\n transform: scale(0);\\n opacity: 0; } }\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value {\\n display: flex;\\n user-select: none;\\n align-items: center;\\n font-size: 12px;\\n padding: 3px 5px;\\n margin: 3px 5px 3px 0;\\n color: #fff;\\n background-color: #5897fb;\\n border-radius: 4px;\\n animation-name: scaleIn;\\n animation-duration: .2s;\\n animation-timing-function: ease-out;\\n animation-fill-mode: both; }\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value.ss-out {\\n animation-name: scaleOut;\\n animation-duration: .2s;\\n animation-timing-function: ease-out; }\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete {\\n margin: 0 0 0 5px;\\n cursor: pointer; }\\n\\n.ss-main .ss-multi-selected .ss-add {\\n display: flex;\\n flex: 0 1 3px;\\n margin: 9px 12px 0 5px; }\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n background: #666;\\n position: relative;\\n height: 10px;\\n width: 2px;\\n transition: transform .2s; }\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus:after {\\n background: #666;\\n content: \\\"\\\";\\n position: absolute;\\n height: 2px;\\n width: 10px;\\n left: -4px;\\n top: 4px; }\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross {\\n transform: rotate(45deg); }\\n\\n.ss-main .ss-content {\\n position: absolute;\\n width: 100%;\\n margin: -1px 0 0;\\n box-sizing: border-box;\\n border: 1px solid #dcdee2;\\n z-index: 1010;\\n background-color: #fff;\\n transform-origin: center top;\\n transition: transform .2s,opacity .2s;\\n opacity: 0;\\n transform: scaleY(0); }\\n\\n.ss-main .ss-content.ss-open {\\n display: block;\\n opacity: 1;\\n transform: scaleY(1); }\\n\\n.ss-main .ss-content .ss-search {\\n display: flex;\\n flex-direction: row;\\n padding: 8px 10px; }\\n\\n.ss-main .ss-content .ss-search.ss-hide, .ss-main .ss-content .ss-search.ss-hide input {\\n height: 0;\\n opacity: 0;\\n padding: 0;\\n margin: 0; }\\n\\n.ss-main .ss-content .ss-search input {\\n display: inline-flex;\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n flex: 1 1 auto;\\n width: 100%;\\n min-width: 0;\\n height: 30px;\\n padding: 5px 10px;\\n margin: 0;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n text-align: left;\\n box-sizing: border-box;\\n -webkit-box-sizing: border-box;\\n -webkit-appearance: textfield; }\\n\\n.ss-main .ss-content .ss-search input::placeholder {\\n color: #b3b3b3; }\\n\\n.ss-main .ss-content .ss-search input:focus {\\n box-shadow: 0 0 5px #5897fb; }\\n\\n.ss-main .ss-content .ss-search .ss-addable {\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n font-size: 22px;\\n font-weight: 700;\\n flex: 0 0 30px;\\n height: 30px;\\n margin: 0 0 0 8px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n box-sizing: border-box; }\\n\\n.ss-main .ss-content .ss-addable {\\n padding-top: 0; }\\n\\n.ss-main .ss-content .ss-list {\\n max-height: 200px;\\n overflow-x: hidden;\\n overflow-y: auto;\\n text-align: left; }\\n\\n.ss-main .ss-content .ss-list .ss-optgroup .ss-optgroup-label {\\n padding: 6px 10px;\\n font-weight: 700; }\\n\\n.ss-main .ss-content .ss-list .ss-optgroup .ss-option {\\n padding: 6px 6px 6px 25px; }\\n\\n.ss-main .ss-content .ss-list .ss-option {\\n padding: 6px 10px;\\n cursor: pointer;\\n user-select: none; }\\n\\n.ss-main .ss-content .ss-list .ss-option * {\\n display: inline-block; }\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-highlighted, .ss-main .ss-content .ss-list .ss-option:hover {\\n color: #fff;\\n background-color: #5897fb; }\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-disabled {\\n cursor: default;\\n color: #dcdee2;\\n background-color: #fff; }\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-hide {\\n display: none; }\\n\\n.ss-main .ss-content .ss-list .ss-option .ss-search-highlight {\\n background-color: #fff70062; }\\n\\n/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */\\n/* Document\\n ========================================================================== */\\n/**\\n * 1. Correct the line height in all browsers.\\n * 2. Prevent adjustments of font size after orientation changes in iOS.\\n */\\nhtml {\\n line-height: 1.15;\\n /* 1 */\\n -webkit-text-size-adjust: 100%;\\n /* 2 */ }\\n\\n/* Sections\\n ========================================================================== */\\n/**\\n * Remove the margin in all browsers.\\n */\\nbody {\\n margin: 0; }\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0; }\\n\\n/* Grouping content\\n ========================================================================== */\\n/**\\n * 1. Add the correct box sizing in Firefox.\\n * 2. Show the overflow in Edge and IE.\\n */\\nhr {\\n box-sizing: content-box;\\n /* 1 */\\n height: 0;\\n /* 1 */\\n overflow: visible;\\n /* 2 */ }\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\npre {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */ }\\n\\n/* Text-level semantics\\n ========================================================================== */\\n/**\\n * Remove the gray background on active links in IE 10.\\n */\\na {\\n background-color: transparent; }\\n\\n/**\\n * 1. Remove the bottom border in Chrome 57-\\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n */\\nabbr[title] {\\n border-bottom: none;\\n /* 1 */\\n text-decoration: underline;\\n /* 2 */\\n text-decoration: underline dotted;\\n /* 2 */ }\\n\\n/**\\n * Add the correct font weight in Chrome, Edge, and Safari.\\n */\\nb,\\nstrong {\\n font-weight: bolder; }\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\ncode,\\nkbd,\\nsamp {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */ }\\n\\n/**\\n * Add the correct font size in all browsers.\\n */\\nsmall {\\n font-size: 80%; }\\n\\n/**\\n * Prevent `sub` and `sup` elements from affecting the line height in\\n * all browsers.\\n */\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline; }\\n\\nsub {\\n bottom: -0.25em; }\\n\\nsup {\\n top: -0.5em; }\\n\\n/* Embedded content\\n ========================================================================== */\\n/**\\n * Remove the border on images inside links in IE 10.\\n */\\nimg {\\n border-style: none; }\\n\\n/* Forms\\n ========================================================================== */\\n/**\\n * 1. Change the font styles in all browsers.\\n * 2. Remove the margin in Firefox and Safari.\\n */\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit;\\n /* 1 */\\n font-size: 100%;\\n /* 1 */\\n line-height: 1.15;\\n /* 1 */\\n margin: 0;\\n /* 2 */ }\\n\\n/**\\n * Show the overflow in IE.\\n * 1. Show the overflow in Edge.\\n */\\nbutton,\\ninput {\\n /* 1 */\\n overflow: visible; }\\n\\n/**\\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\\n * 1. Remove the inheritance of text transform in Firefox.\\n */\\nbutton,\\nselect {\\n /* 1 */\\n text-transform: none; }\\n\\n/**\\n * Correct the inability to style clickable types in iOS and Safari.\\n */\\nbutton,\\n[type=\\\"button\\\"],\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n -webkit-appearance: button; }\\n\\n/**\\n * Remove the inner border and padding in Firefox.\\n */\\nbutton::-moz-focus-inner,\\n[type=\\\"button\\\"]::-moz-focus-inner,\\n[type=\\\"reset\\\"]::-moz-focus-inner,\\n[type=\\\"submit\\\"]::-moz-focus-inner {\\n border-style: none;\\n padding: 0; }\\n\\n/**\\n * Restore the focus styles unset by the previous rule.\\n */\\nbutton:-moz-focusring,\\n[type=\\\"button\\\"]:-moz-focusring,\\n[type=\\\"reset\\\"]:-moz-focusring,\\n[type=\\\"submit\\\"]:-moz-focusring {\\n outline: 1px dotted ButtonText; }\\n\\n/**\\n * Correct the padding in Firefox.\\n */\\nfieldset {\\n padding: 0.35em 0.75em 0.625em; }\\n\\n/**\\n * 1. Correct the text wrapping in Edge and IE.\\n * 2. Correct the color inheritance from `fieldset` elements in IE.\\n * 3. Remove the padding so developers are not caught out when they zero out\\n * `fieldset` elements in all browsers.\\n */\\nlegend {\\n box-sizing: border-box;\\n /* 1 */\\n color: inherit;\\n /* 2 */\\n display: table;\\n /* 1 */\\n max-width: 100%;\\n /* 1 */\\n padding: 0;\\n /* 3 */\\n white-space: normal;\\n /* 1 */ }\\n\\n/**\\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n */\\nprogress {\\n vertical-align: baseline; }\\n\\n/**\\n * Remove the default vertical scrollbar in IE 10+.\\n */\\ntextarea {\\n overflow: auto; }\\n\\n/**\\n * 1. Add the correct box sizing in IE 10.\\n * 2. Remove the padding in IE 10.\\n */\\n[type=\\\"checkbox\\\"],\\n[type=\\\"radio\\\"] {\\n box-sizing: border-box;\\n /* 1 */\\n padding: 0;\\n /* 2 */ }\\n\\n/**\\n * Correct the cursor style of increment and decrement buttons in Chrome.\\n */\\n[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n height: auto; }\\n\\n/**\\n * 1. Correct the odd appearance in Chrome and Safari.\\n * 2. Correct the outline style in Safari.\\n */\\n[type=\\\"search\\\"] {\\n -webkit-appearance: textfield;\\n /* 1 */\\n outline-offset: -2px;\\n /* 2 */ }\\n\\n/**\\n * Remove the inner padding in Chrome and Safari on macOS.\\n */\\n[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none; }\\n\\n/**\\n * 1. Correct the inability to style clickable types in iOS and Safari.\\n * 2. Change font properties to `inherit` in Safari.\\n */\\n::-webkit-file-upload-button {\\n -webkit-appearance: button;\\n /* 1 */\\n font: inherit;\\n /* 2 */ }\\n\\n/* Interactive\\n ========================================================================== */\\n/*\\n * Add the correct display in Edge, IE 10+, and Firefox.\\n */\\ndetails {\\n display: block; }\\n\\n/*\\n * Add the correct display in all browsers.\\n */\\nsummary {\\n display: list-item; }\\n\\n/* Misc\\n ========================================================================== */\\n/**\\n * Add the correct display in IE 10+.\\n */\\ntemplate {\\n display: none; }\\n\\n/**\\n * Add the correct display in IE 10.\\n */\\n[hidden] {\\n display: none; }\\n\\n/* ==========================================================================\\n #RESET\\n ========================================================================== */\\n/**\\n * A very simple reset that sits on top of Normalize.css.\\n */\\nbody,\\nh1, h2, h3, h4, h5, h6,\\nblockquote, p, pre,\\ndl, dd, ol, ul,\\nfigure,\\nhr,\\nfieldset, legend {\\n margin: 0;\\n padding: 0; }\\n\\n/**\\n * Remove trailing margins from nested lists.\\n */\\nli > ol,\\nli > ul {\\n margin-bottom: 0; }\\n\\n/**\\n * Remove default table spacing.\\n */\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0; }\\n\\n/**\\n * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;`\\n * on fieldsets.\\n */\\nfieldset {\\n min-width: 0;\\n /* [1] */\\n border: 0; }\\n\\n/* ==========================================================================\\n #SHARED\\n ========================================================================== */\\n/**\\n * Shared declarations for certain elements.\\n */\\naddress,\\nh1, h2, h3, h4, h5, h6,\\nblockquote, pre,\\ndl, ol, ul,\\nhr,\\ntable,\\nfieldset {\\n margin-bottom: 2rem; }\\n address:last-child,\\n h1:last-child, h2:last-child, h3:last-child, h4:last-child, h5:last-child, h6:last-child,\\n blockquote:last-child, pre:last-child,\\n dl:last-child, ol:last-child, ul:last-child,\\n hr:last-child,\\n table:last-child,\\n fieldset:last-child {\\n margin-bottom: 0; }\\n\\n/**\\n * Consistent indentation for lists.\\n */\\ndd, ol, ul {\\n margin-left: 2rem; }\\n\\n/* ==========================================================================\\n #PRINT\\n ========================================================================== */\\n/**\\n * Very crude, reset-like styles taken from the HTML5 Boilerplate:\\n * https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/css.md#print-styles\\n * https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L205-L282\\n */\\n@media print {\\n /**\\n * 1. Black prints faster: http://www.sanbeiji.com/archives/953\\n */\\n *, *::before, *::after {\\n background: transparent !important;\\n color: #000 !important;\\n /* [1] */\\n box-shadow: none !important;\\n text-shadow: none !important; }\\n a, a:visited {\\n text-decoration: underline; }\\n a[href]::after {\\n content: \\\" (\\\" attr(href) \\\")\\\"; }\\n abbr[title]::after {\\n content: \\\" (\\\" attr(title) \\\")\\\"; }\\n /**\\n * Don’t show links that are fragment identifiers, or use the `javascript:`\\n * pseudo protocol.\\n */\\n a[href^=\\\"#\\\"]::after,\\n a[href^=\\\"javascript:\\\"]::after {\\n content: \\\"\\\"; }\\n pre,\\n blockquote {\\n border: 1px solid #999;\\n page-break-inside: avoid; }\\n /**\\n * Printing Tables: http://css-discuss.incutio.com/wiki/Printing_Tables\\n */\\n thead {\\n display: table-header-group; }\\n tr,\\n img {\\n page-break-inside: avoid; }\\n img {\\n max-width: 100% !important; }\\n p,\\n h2,\\n h3 {\\n orphans: 3;\\n widows: 3; }\\n h2,\\n h3 {\\n page-break-after: avoid; } }\\n\\n/* ==========================================================================\\n #BLOCK\\n ========================================================================== */\\n/**\\n * Stacked image-with-text object. A simple abstraction to cover a very commonly\\n * occurring design pattern.\\n */\\n/* ==========================================================================\\n #BOX\\n ========================================================================== */\\n/**\\n * The box object simply boxes off content. Extend with cosmetic styles in the\\n * Components layer.\\n */\\n/* ==========================================================================\\n #LIST\\n ========================================================================== */\\n/**\\n * Strip list-like appearance from lists by removing their bullets and any\\n * indentation.\\n */\\n/**\\n * The list-inline object simply displays a list of items in one line.\\n */\\nblockquote {\\n border-left: #979797 5px solid;\\n padding-left: 1.5rem; }\\n\\ninput[type='tel'],\\ninput[type='text'],\\ninput[type='email'],\\ninput[type='number'],\\ninput[type='search'],\\ntextarea,\\nselect {\\n appearance: none;\\n background-color: #fff;\\n border: 0;\\n border-bottom: #e6e6e6 4px solid;\\n border-radius: 0;\\n color: #181d25;\\n display: block;\\n padding: 0.5rem 0rem;\\n font-size: 1rem;\\n line-height: 1.5;\\n transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n resize: none;\\n outline: 0;\\n width: 100%; }\\n input[type='tel']:hover, input[type='tel']:focus,\\n input[type='text']:hover,\\n input[type='text']:focus,\\n input[type='email']:hover,\\n input[type='email']:focus,\\n input[type='number']:hover,\\n input[type='number']:focus,\\n input[type='search']:hover,\\n input[type='search']:focus,\\n textarea:hover,\\n textarea:focus,\\n select:hover,\\n select:focus {\\n border-color: #3fd8b6; }\\n input[type='tel']::placeholder,\\n input[type='text']::placeholder,\\n input[type='email']::placeholder,\\n input[type='number']::placeholder,\\n input[type='search']::placeholder,\\n textarea::placeholder,\\n select::placeholder {\\n color: #979797; }\\n\\ninput[type='checkbox'] {\\n display: block;\\n margin-top: -0.25rem;\\n position: relative;\\n visibility: hidden;\\n height: 1.125rem;\\n width: 1.125rem; }\\n input[type='checkbox']::after {\\n content: '';\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: 1.125rem;\\n border: #000 2px solid;\\n visibility: visible;\\n position: absolute;\\n transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: 0.125rem; }\\n input[type='checkbox']:checked::after {\\n background-color: #000;\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8;base64,PHN2ZyBpZD0iaWNvbi1jaGVjayIgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIvPg0KPC9zdmc+\\\"); }\\n input[type='checkbox']:checked:hover::after {\\n background-color: #3fd8b6; }\\n input[type='checkbox'] + label {\\n padding-left: 0.5rem;\\n transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955); }\\n input[type='checkbox']:hover::after {\\n border-color: #3fd8b6; }\\n input[type='checkbox']:hover + label {\\n color: #3fd8b6; }\\n\\ninput[type='radio'] {\\n display: block;\\n margin-top: -0.25rem;\\n position: relative;\\n visibility: hidden;\\n height: 1.125rem;\\n width: 1.125rem; }\\n input[type='radio']::after {\\n content: '';\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: 1.125rem;\\n border: #000 2px solid;\\n visibility: visible;\\n position: absolute;\\n transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: 100%; }\\n input[type='radio']::before {\\n content: '';\\n background-color: #000;\\n border-radius: 100%;\\n display: block;\\n visibility: visible;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n opacity: 0;\\n transform: translate(-50%, -50%) scale(0.01);\\n transition: background-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), opacity 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n height: 0.5rem;\\n width: 0.5rem;\\n z-index: 1; }\\n input[type='radio']:checked::before {\\n opacity: 1;\\n transform: translate(-50%, -50%); }\\n input[type='radio'] + label {\\n padding-left: 0.5rem;\\n transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955); }\\n input[type='radio']:hover::after {\\n border-color: #3fd8b6; }\\n input[type='radio']:hover::before {\\n background-color: #3fd8b6; }\\n input[type='radio']:hover + label {\\n color: #3fd8b6; }\\n\\n/* ==========================================================================\\n #IMAGES\\n ========================================================================== */\\n/**\\n * 1. Fluid images for responsive purposes.\\n * 2. Offset `alt` text from surrounding copy.\\n * 3. Setting `vertical-align` removes the whitespace that appears under `img`\\n * elements when they are dropped into a page as-is. Safer alternative to\\n * using `display: block;`.\\n */\\npicture {\\n display: block; }\\n\\nimg {\\n height: auto;\\n /* [1] */\\n max-width: 100%;\\n /* [1] */\\n font-style: italic;\\n /* [2] */\\n vertical-align: middle;\\n /* [3] */ }\\n\\n/* ==========================================================================\\n #PAGE\\n ========================================================================== */\\nhtml {\\n box-sizing: border-box;\\n overflow-y: scroll;\\n min-height: 100%; }\\n html *, html *::before, html *::after {\\n box-sizing: inherit; }\\n\\nbody {\\n overflow: hidden; }\\n\\narticle {\\n position: relative; }\\n\\n/* ==========================================================================\\n #TABLES\\n ========================================================================== */\\n/**\\n * 1. Ensure tables fill up as much space as possible.\\n */\\ntable {\\n width: 100%;\\n /* [1] */ }\\n\\nhtml {\\n color: #181d25;\\n line-height: 1.75;\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1rem;\\n font-weight: 400;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale; }\\n @media (min-width: 1801px) {\\n html {\\n font-size: 1.125rem; } }\\n\\n@media (min-width: 1201px) {\\n body {\\n font-size: 1.125rem; } }\\n\\nh1, h2, h3, h4, h5, h6, p, ul, ol, span {\\n font-variant-ligatures: common-ligatures;\\n font-feature-settings: 'liga', 'clig'; }\\n h1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child, p:first-child, ul:first-child, ol:first-child, span:first-child {\\n margin-top: 0; }\\n h1:last-child, h2:last-child, h3:last-child, h4:last-child, h5:last-child, h6:last-child, p:last-child, ul:last-child, ol:last-child, span:last-child {\\n margin-bottom: 0; }\\n\\nh1 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 2rem;\\n font-weight: 400;\\n line-height: 1.05;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 901px) {\\n h1 {\\n font-size: 2.75rem; } }\\n @media (min-width: 1201px) {\\n h1 {\\n font-size: 3.5rem; } }\\n\\nh2 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.75rem;\\n font-weight: 400;\\n line-height: 1.05;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 901px) {\\n h2 {\\n font-size: 2.125rem; } }\\n @media (min-width: 1201px) {\\n h2 {\\n font-size: 2.5rem; } }\\n\\nh3 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 300;\\n line-height: 1.25;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 901px) {\\n h3 {\\n font-size: 1.75rem; } }\\n @media (min-width: 1201px) {\\n h3 {\\n font-size: 2rem; } }\\n\\nh4 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 1201px) {\\n h4 {\\n font-size: 1.5rem; } }\\n\\nh5 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 1201px) {\\n h5 {\\n font-size: 1.25rem; } }\\n\\nh6 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1rem;\\n font-weight: 400;\\n letter-spacing: 0.0625rem;\\n line-height: 1.25;\\n text-transform: uppercase;\\n margin-bottom: 1.5rem; }\\n\\np {\\n margin: 2rem 0rem; }\\n\\na {\\n color: #3fd8b6;\\n text-decoration: none;\\n transition: color 0.4s ease; }\\n a:hover {\\n color: #2bd3ad; }\\n a:active {\\n color: #26be9c; }\\n\\n.accordion {\\n text-align: left; }\\n .accordion__item {\\n border-top: #979797 2px solid;\\n display: flex;\\n padding: 1.5rem 0rem;\\n display: block; }\\n .accordion__item__inner {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1; }\\n .accordion__header {\\n cursor: pointer;\\n display: flex;\\n justify-content: space-between;\\n width: 100%; }\\n .accordion__header__toggle {\\n flex-shrink: 0;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-left: 0.5rem;\\n transform: scaleY(-1);\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s; }\\n .accordion__item.is-active .accordion__header__toggle {\\n transform: scaleY(1); }\\n .accordion__header__toggle .icon {\\n max-height: 100%;\\n max-width: 100%; }\\n .accordion__heading {\\n margin-bottom: 0; }\\n .accordion__content {\\n display: none;\\n overflow: hidden;\\n padding: 0.5rem 0rem 0rem;\\n transform: scale(0.9);\\n transition: transform 0.3s ease;\\n will-change: transform; }\\n .accordion__item.is-active .accordion__content {\\n transform: scale(1); }\\n\\n.archive__featured {\\n padding-top: 2rem; }\\n @media (min-width: 601px) {\\n .archive__featured {\\n padding-top: 5rem; } }\\n\\n.archive__list {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center;\\n padding-top: 2rem; }\\n @media (min-width: 601px) {\\n .archive__list {\\n justify-content: flex-start; } }\\n @media (min-width: 601px) {\\n .archive__list {\\n padding-top: 5rem; } }\\n\\n.index-data .filter {\\n padding-top: 2rem; }\\n @media (max-width: 600px) {\\n .index-data .filter {\\n margin: 0 2rem; } }\\n @media (min-width: 901px) {\\n .index-data .filter {\\n padding-top: 2.5rem; } }\\n\\n.bg-img {\\n background-position: 50%;\\n background-repeat: no-repeat;\\n background-size: cover;\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 0; }\\n\\n.image-banner {\\n overflow: hidden;\\n min-height: 20rem;\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n @media (min-width: 601px) {\\n .image-banner {\\n min-height: 30rem; } }\\n @media (min-width: 901px) {\\n .image-banner {\\n min-height: 40rem; } }\\n @media (min-width: 1201px) {\\n .image-banner {\\n min-height: 50rem; } }\\n .image-banner picture,\\n .image-banner img {\\n width: 100%; }\\n .image-banner picture::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out; }\\n .image-banner .banner__image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%; }\\n .image-banner .banner__image .media {\\n padding-bottom: 0;\\n height: 100%; }\\n .image-banner .component__inner {\\n color: #fff;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n position: relative; }\\n\\n.button,\\n[type=button],\\n[type=reset],\\n[type=submit] {\\n background-color: #3fd8b6;\\n color: #fff;\\n display: inline-block;\\n font-weight: 700;\\n line-height: 1.125;\\n padding: 1rem 3rem;\\n text-decoration: none;\\n transition: all 0.4s ease;\\n min-width: 12.5rem;\\n text-align: center; }\\n .button:hover,\\n [type=button]:hover,\\n [type=reset]:hover,\\n [type=submit]:hover {\\n background-color: #2bd3ad;\\n color: #fff; }\\n .button:active,\\n [type=button]:active,\\n [type=reset]:active,\\n [type=submit]:active {\\n background-color: #26be9c;\\n color: #fff; }\\n .button.button--text,\\n [type=button].button--text,\\n [type=reset].button--text,\\n [type=submit].button--text {\\n background-color: transparent;\\n border: 0;\\n border-radius: 0;\\n color: #3fd8b6;\\n padding: 0;\\n outline: none !important; }\\n .button.button--text:hover,\\n [type=button].button--text:hover,\\n [type=reset].button--text:hover,\\n [type=submit].button--text:hover {\\n background-color: transparent;\\n color: #2bd3ad; }\\n .button.button--text:active,\\n [type=button].button--text:active,\\n [type=reset].button--text:active,\\n [type=submit].button--text:active {\\n background-color: transparent;\\n color: #26be9c; }\\n\\n.links {\\n margin-top: 3.5rem; }\\n .links:first-child {\\n margin-top: 0; }\\n\\n@media (min-width: 601px) {\\n .columns-block .columns {\\n display: flex;\\n flex-wrap: wrap; } }\\n\\n.columns-block .columns.left-borders .column {\\n border-left: 4px solid #3fd8b6;\\n padding-left: 2rem; }\\n\\n.columns-block .column {\\n flex-shrink: 0;\\n flex-grow: 0;\\n margin-bottom: 2rem;\\n text-align: left;\\n width: 100%; }\\n @media (min-width: 1201px) {\\n .columns-block .column {\\n margin-bottom: 4rem; } }\\n .columns-block .column__icon {\\n line-height: 0;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 601px) {\\n .columns-block .column {\\n margin-right: 2rem; } }\\n .columns-block .column .heading, .columns-block .column__number {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 1201px) {\\n .columns-block .column .heading, .columns-block .column__number {\\n font-size: 1.5rem; } }\\n .columns-block .column .heading {\\n margin-bottom: 0; }\\n .columns-block .column .heading + p {\\n margin-top: 2rem; }\\n\\n.columns-block[data-columns-per-row=\\\"two\\\"] .column {\\n flex-basis: calc(50% - 1rem); }\\n @media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"two\\\"] .column:nth-of-type(2n) {\\n margin-right: 0; } }\\n @media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"two\\\"] .column {\\n flex-basis: calc(50% - 2rem);\\n margin-right: 4rem; } }\\n\\n.columns-block[data-columns-per-row=\\\"three\\\"] .column {\\n flex-basis: calc(33.33333% - 1.33333rem); }\\n @media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"three\\\"] .column:nth-of-type(3n) {\\n margin-right: 0; } }\\n @media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"three\\\"] .column {\\n flex-basis: calc(33.33333% - 4rem);\\n margin-right: 6rem; } }\\n\\n.columns-block[data-columns-per-row=\\\"four\\\"] .column {\\n flex-basis: calc(50% - 1rem); }\\n @media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(2n) {\\n margin-right: 0; } }\\n @media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column {\\n flex-basis: calc(25% - 2rem); }\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(2n) {\\n margin-right: 2rem; }\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(4n) {\\n margin-right: 0; } }\\n\\n.columns-block.u-text-align--center .columns {\\n justify-content: center; }\\n .columns-block.u-text-align--center .columns .column {\\n text-align: center; }\\n\\n.columns-block.u-text-align--right .columns {\\n justify-content: flex-end; }\\n .columns-block.u-text-align--right .columns .column {\\n text-align: right; }\\n\\n.company__name {\\n margin-bottom: 1rem; }\\n\\n.company__tagline {\\n max-width: 40rem; }\\n\\n.component {\\n position: relative; }\\n .component .bg-img {\\n z-index: -1; }\\n .component__inner {\\n display: block;\\n padding: 6rem 2rem; }\\n @media (min-width: 901px) {\\n .component__inner {\\n padding: 9rem 5rem; } }\\n @media (min-width: 1201px) {\\n .component__inner {\\n padding: 12.5rem 5rem; } }\\n .component__inner > :last-child {\\n margin-bottom: 0; }\\n .slider .component__inner {\\n padding-right: 0;\\n padding-left: 0; }\\n .gallery .component__inner {\\n padding-right: 0;\\n padding-bottom: 0;\\n padding-left: 0; }\\n .component__content {\\n margin: 0 auto;\\n max-width: 40rem; }\\n .component__intro > *:last-child {\\n margin-bottom: 2.5rem; }\\n @media (min-width: 901px) {\\n .component__intro > *:last-child {\\n margin-bottom: 5rem; } }\\n .component.u-background-color--light {\\n background-color: #fff; }\\n .component.u-background-color--dark {\\n background-color: #f9f9fa; }\\n .component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner,\\n .component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .component__inner,\\n .component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .featured-blocks__inner,\\n .component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .featured-blocks__inner,\\n .component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .contact-info__content,\\n .component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .contact-info__content {\\n padding-top: 0; }\\n @media (max-width: 600px) {\\n .component.u-background-color--light.image-banner + .component.u-background-color--light.u-padding-collapse .component__inner,\\n .component.u-background-color--dark.image-banner + .component.u-background-color--dark.u-padding-collapse .component__inner,\\n .component.component.u-background-color--light.u-padding-collapse + .u-background-color--light.tiles .component__inner,\\n .component.component.u-background-color--dark.u-padding-collapse + .u-background-color--dark.tiles .component__inner {\\n padding-top: 0; } }\\n .component.columns-block.u-text-align--center .component__content, .component.featured-blocks.u-text-align--center .component__content, .component.featured-posts.u-text-align--center .component__content, .component.gallery.u-text-align--center .component__content, .component.video.u-text-align--center .component__content, .component.table.u-text-align--center .component__content, .component.team.u-text-align--center .component__content, .component.slider.u-text-align--center .component__content {\\n text-align: center; }\\n .component.columns-block.u-text-align--left .component__content, .component.featured-blocks.u-text-align--left .component__content, .component.featured-posts.u-text-align--left .component__content, .component.gallery.u-text-align--left .component__content, .component.video.u-text-align--left .component__content, .component.table.u-text-align--left .component__content, .component.team.u-text-align--left .component__content, .component.slider.u-text-align--left .component__content {\\n margin-left: 0; }\\n .component.columns-block.u-text-align--right .component__content, .component.featured-blocks.u-text-align--right .component__content, .component.featured-posts.u-text-align--right .component__content, .component.gallery.u-text-align--right .component__content, .component.video.u-text-align--right .component__content, .component.table.u-text-align--right .component__content, .component.team.u-text-align--right .component__content, .component.slider.u-text-align--right .component__content {\\n margin-right: 0;\\n text-align: right; }\\n .component.has-background-image__inner {\\n position: relative;\\n z-index: 1; }\\n .component.u-background-color--light + .component.gallery.u-background-color--light,\\n .component.u-background-color--dark + .component.gallery.u-background-color--dark,\\n .component.u-background-color--light + .component.slider.u-background-color--light,\\n .component.u-background-color--dark + .component.slider.u-background-color--dark {\\n padding-top: 0; }\\n .component.gallery.u-background-color--light + .component.u-background-color--light,\\n .component.gallery.u-background-color--dark + .component.u-background-color--dark {\\n margin-top: -0.5rem; }\\n @media (min-width: 1201px) {\\n .component.gallery.u-background-color--light + .component.u-background-color--light,\\n .component.gallery.u-background-color--dark + .component.u-background-color--dark {\\n margin-top: -0.75rem; } }\\n\\n.u-background-color--light {\\n background-color: #fff; }\\n\\n.u-background-color--dark {\\n background-color: #f9f9fa; }\\n\\n@media (min-width: 601px) {\\n .contact {\\n display: flex;\\n flex-wrap: wrap; } }\\n\\n@media (min-width: 601px) {\\n .contact__column {\\n flex: 0 0 50%; } }\\n\\n@media (min-width: 901px) {\\n .contact__column {\\n flex: 0 0 100%; } }\\n\\n@media (min-width: 1201px) {\\n .contact__column {\\n flex: 0 0 50%; } }\\n\\n.contact__row {\\n margin-bottom: 2rem; }\\n\\n.contact__address, .contact__hours, .contact__phone, .contact__email {\\n display: flex; }\\n .contact__address .icon, .contact__hours .icon, .contact__phone .icon, .contact__email .icon {\\n margin-right: 0.5rem;\\n margin-top: 5px; }\\n\\n@media (min-width: 901px) {\\n .contact-info__wrapper {\\n display: flex; } }\\n\\n.contact-info__content {\\n padding: 6rem 2rem; }\\n @media (min-width: 901px) {\\n .contact-info__content {\\n flex: 1 0 50%;\\n padding-top: 4rem;\\n padding-bottom: 4rem; } }\\n @media (min-width: 1201px) {\\n .contact-info__content {\\n padding: 12.5rem 5rem; } }\\n .contact-info__content .gform_wrapper {\\n margin: 4rem 0; }\\n @media (min-width: 601px) {\\n .contact-info__content .gform_fields {\\n display: flex;\\n justify-content: space-between; } }\\n @media (min-width: 601px) {\\n .contact-info__content .gform_fields .gfield {\\n flex: 0 0 100%; } }\\n @media (min-width: 601px) {\\n .contact-info__content .gform_fields .gf_left_half, .contact-info__content .gform_fields .gf_right_half {\\n flex: 0 0 48%; } }\\n .contact-info__content .gform_fields textarea {\\n height: 8rem; }\\n\\n@media (min-width: 901px) {\\n .contact-info__map {\\n flex: 0 1 50%; } }\\n\\n.contact-info__map .map__canvas {\\n height: 500px;\\n width: 100%; }\\n @media (min-width: 901px) {\\n .contact-info__map .map__canvas {\\n height: 100%; } }\\n .contact-info__map .map__canvas .gm-style-iw {\\n max-width: 300px; }\\n .contact-info__map .map__canvas .gm-style-iw img {\\n margin-bottom: 1rem; }\\n .contact-info__map .map__canvas .gm-style-iw a {\\n display: block;\\n margin-top: 1rem; }\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"],\\n.home .hero[data-featured-bar=\\\"side\\\"] {\\n display: flex;\\n flex-direction: column;\\n height: calc(100vh - 4rem);\\n min-height: 40rem; }\\n @media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"],\\n .home .hero[data-featured-bar=\\\"side\\\"] {\\n height: calc(100vh - 7rem);\\n min-height: 45rem; } }\\n @media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"],\\n .home .hero[data-featured-bar=\\\"side\\\"] {\\n min-height: 55rem; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n .home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n flex: 1 1 auto;\\n height: auto;\\n min-height: 25rem; }\\n @media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n .home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n min-height: 30rem; } }\\n @media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n .home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n min-height: 40rem; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar {\\n flex: 0 0 auto;\\n display: flex;\\n justify-content: space-around;\\n align-items: center;\\n padding: 1.5rem 2rem; }\\n @media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar {\\n padding: 1.5rem 2rem; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .col + .col,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .col + .col {\\n margin-left: 1rem; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .featured-content-3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .featured-content-3 {\\n display: none; }\\n @media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .featured-content-3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .featured-content-3 {\\n display: block; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n display: none; }\\n @media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n display: block;\\n flex: 0 0 40%; } }\\n @media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n flex: 0 0 50%; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser {\\n margin-right: 0;\\n width: 100%;\\n flex-basis: 100%; }\\n @media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser {\\n display: flex;\\n align-items: center; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .meta,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .meta {\\n display: none; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .post__content,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .post__content {\\n padding-top: 0;\\n margin-right: 1rem; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container {\\n order: 2;\\n position: relative;\\n width: 100%;\\n padding-bottom: 2rem;\\n display: none; }\\n @media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container {\\n display: block; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::before, .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::after,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::before,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::after {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n content: \\\"\\\";\\n width: 100%;\\n background-color: #ececec;\\n height: 5px; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::after,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::after {\\n background-color: #3fd8b6;\\n width: 80%; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media {\\n box-shadow: 0 0 20px #cecece; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media[data-ratio=\\\"1:1\\\"],\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media[data-ratio=\\\"1:1\\\"] {\\n padding-bottom: 65%; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h2,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h2 {\\n text-transform: uppercase;\\n font-size: 0.75rem;\\n opacity: 0.75; }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h3 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem; }\\n @media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h3 {\\n font-size: 1.25rem; } }\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content p,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content p {\\n display: none; }\\n @media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content p,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content p {\\n display: block; } }\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] {\\n min-height: 65rem; } }\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar {\\n padding: 2rem 5rem; } }\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .col + .col {\\n margin-left: 2rem; }\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post {\\n max-width: 750px; } }\\n\\n@media (min-width: 1801px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post {\\n max-width: 800px; } }\\n\\n@media (min-width: 1801px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .post__content {\\n margin-right: 3rem; } }\\n\\n@media (min-width: 1201px) {\\n .hero.home[data-featured-bar=\\\"side\\\"] {\\n flex-direction: row; }\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar {\\n flex-direction: column;\\n max-width: 24rem;\\n height: 100%;\\n padding: 2rem 4rem; }\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar__content {\\n width: 100%; }\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar .col + .col {\\n margin-left: 0;\\n margin-top: 2rem; }\\n .hero.home[data-featured-bar=\\\"side\\\"] .post--teaser {\\n flex-direction: column;\\n flex-basis: 100%;\\n margin-right: 0; }\\n .hero.home[data-featured-bar=\\\"side\\\"] .post--teaser .media {\\n margin-top: 3rem; } }\\n\\n.home .hero[data-nav-buttons=\\\"true\\\"] .featured-bar {\\n margin-bottom: 50px; }\\n @media (min-width: 901px) {\\n .home .hero[data-nav-buttons=\\\"true\\\"] .featured-bar {\\n margin-bottom: 0; } }\\n\\n.featured-blocks .block {\\n width: 100%; }\\n .featured-blocks .block a {\\n display: block;\\n position: relative; }\\n .featured-blocks .block a .block__image {\\n position: relative; }\\n .featured-blocks .block a .block__image::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out; }\\n .featured-blocks .block a .block__image:hover::after {\\n opacity: 0.3; }\\n .featured-blocks .block a .block__content {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n padding: 2rem 3rem;\\n color: #fff;\\n z-index: 2; }\\n @media (min-width: 601px) {\\n .featured-blocks .block a .block__content {\\n padding: 3.5rem 6rem; } }\\n @media (min-width: 901px) {\\n .featured-blocks .block a .block__content {\\n padding: 2rem 3rem; } }\\n @media (min-width: 1201px) {\\n .featured-blocks .block a .block__content {\\n padding: 2.75rem 4.5rem; } }\\n @media (min-width: 1801px) {\\n .featured-blocks .block a .block__content {\\n padding: 3.5rem 6rem; } }\\n .featured-blocks .block a .block__content h2 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 300;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n margin-bottom: 0; }\\n @media (min-width: 901px) {\\n .featured-blocks .block a .block__content h2 {\\n font-size: 1.75rem; } }\\n @media (min-width: 1201px) {\\n .featured-blocks .block a .block__content h2 {\\n font-size: 2rem; } }\\n .featured-blocks .block a .block__content h2 + p {\\n margin-top: 0.75rem; }\\n\\n@media (min-width: 901px) {\\n .featured-blocks .featured-blocks-slider-pagination {\\n display: none; } }\\n\\n.featured-blocks__list {\\n margin-left: -2rem;\\n margin-right: -2rem; }\\n @media (min-width: 901px) {\\n .featured-blocks__list {\\n margin-left: -6rem;\\n margin-right: -6rem; } }\\n\\n.featured-blocks .component__inner {\\n padding-bottom: 0; }\\n\\n.featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 6rem; }\\n @media (min-width: 901px) {\\n .featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 9rem; } }\\n @media (min-width: 1201px) {\\n .featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 12.5rem; } }\\n\\n@media (min-width: 601px) {\\n .featured-blocks[data-blocks=\\\"2\\\"] .block {\\n flex: 0 0 50%; } }\\n\\n@media (min-width: 901px) {\\n .featured-blocks[data-blocks=\\\"3\\\"] .block {\\n flex: 0 0 33.333%; } }\\n\\n@media (min-width: 1201px) {\\n .featured-blocks[data-blocks=\\\"4\\\"] .block {\\n flex: 0 0 25%; } }\\n\\n.filter {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n white-space: nowrap;\\n font-size: 1.25rem;\\n line-height: 1.5; }\\n .filter__options {\\n display: inline-flex;\\n margin-left: 0;\\n list-style: none;\\n border-left: #181d25 2px solid;\\n margin-bottom: 0; }\\n .filter__option {\\n color: #979797;\\n padding: 0rem 1rem; }\\n .filter__option.is-active {\\n color: #181d25; }\\n\\n.priority-nav {\\n white-space: nowrap; }\\n .priority-nav__wrapper {\\n position: relative; }\\n .priority-nav__dropdown {\\n list-style: none;\\n margin-left: 0;\\n background: #fff;\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n padding: 1rem 0rem;\\n position: absolute;\\n top: 100%;\\n right: 0;\\n opacity: 0;\\n margin-top: 0.25rem;\\n transform: translate(0, 1rem);\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n visibility: hidden;\\n z-index: 1; }\\n .priority-nav__dropdown > li {\\n margin-left: 0; }\\n .priority-nav__dropdown::before {\\n content: '';\\n background-color: #fff;\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 2rem;\\n width: 2.25rem;\\n right: 0;\\n position: absolute;\\n bottom: 100%;\\n transform: translateY(100%);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955); }\\n .priority-nav__dropdown.show {\\n opacity: 1;\\n transform: translate(0, 0);\\n visibility: visible; }\\n .priority-nav__dropdown.show::before {\\n transform: translate(0); }\\n .priority-nav__dropdown-toggle {\\n background-color: transparent;\\n border: 0;\\n border-radius: 0;\\n color: #3fd8b6;\\n padding: 0;\\n outline: none !important;\\n cursor: pointer;\\n display: block;\\n visibility: hidden;\\n position: absolute;\\n padding: 0 0.375rem;\\n z-index: 2; }\\n .priority-nav__dropdown-toggle:hover {\\n background-color: transparent;\\n color: #2bd3ad; }\\n .priority-nav__dropdown-toggle:active {\\n background-color: transparent;\\n color: #26be9c; }\\n .priority-nav__dropdown-toggle svg {\\n pointer-events: none;\\n transition: fill 0.4s ease; }\\n .priority-nav__dropdown-toggle:hover svg {\\n fill: #3fd8b6; }\\n .priority-nav-has-dropdown .priority-nav__dropdown-toggle {\\n position: relative; }\\n .priority-nav.is-open .priority-nav__dropdown-toggle svg {\\n fill: #3fd8b6; }\\n .priority-nav-is-visible {\\n visibility: visible; }\\n .priority-nav-is-hidden {\\n visibility: hidden; }\\n\\n.overlay-show {\\n background-color: #000;\\n opacity: 0;\\n position: fixed;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n pointer-events: none;\\n transition: opacity 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n z-index: 1000; }\\n .overlay-visible .overlay-show, .overlay-show.show {\\n pointer-events: all;\\n opacity: 0.6; }\\n\\n.flyout {\\n transform: translateX(101%);\\n background-color: #fff;\\n overflow: hidden;\\n -webkit-overflow-scrolling: touch;\\n overflow-y: scroll;\\n position: fixed;\\n top: 0;\\n right: 0;\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n will-change: transform;\\n height: 100%;\\n width: 100%;\\n z-index: 1300; }\\n @media (min-width: 601px) {\\n .flyout {\\n max-width: 40rem; } }\\n .flyout.show {\\n transform: translate3d(0, 0, 0) scale(1); }\\n .no-csstransforms .flyout {\\n right: -200%; }\\n .no-csstransforms .flyout.show {\\n right: 0%; }\\n .flyout__inner {\\n padding: 2.5rem; }\\n .flyout__close {\\n padding: 2rem;\\n height: 1.25rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 1; }\\n .flyout__close::before, .flyout__close::after {\\n content: '';\\n background-color: #000;\\n transition: background-color 0.4s ease;\\n height: 0.125rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 50%;\\n left: 50%; }\\n .flyout--team .flyout__close::before, .flyout--team .flyout__close::after {\\n background-color: #fff; }\\n .flyout__close::before {\\n transform: translate(-50%, -50%) rotate(45deg); }\\n .flyout__close::after {\\n transform: translate(-50%, -50%) rotate(-45deg); }\\n .flyout__close:hover::before, .flyout__close:hover::after {\\n background-color: #3fd8b6; }\\n\\n.flyout-data {\\n display: none; }\\n .flyout .flyout-data {\\n display: block; }\\n\\n.footer {\\n display: block;\\n padding: 6rem 2rem;\\n padding-top: 2.5rem;\\n padding-bottom: 2.5rem;\\n font-size: 0.75rem; }\\n @media (min-width: 901px) {\\n .footer {\\n padding: 9rem 5rem; } }\\n @media (min-width: 1201px) {\\n .footer {\\n padding: 12.5rem 5rem; } }\\n .footer > :last-child {\\n margin-bottom: 0; }\\n @media (max-width: 600px) {\\n .footer {\\n text-align: center; } }\\n @media (min-width: 601px) {\\n .footer {\\n display: flex;\\n justify-content: center;\\n padding-top: 4rem;\\n padding-bottom: 4rem; } }\\n @media (min-width: 1201px) {\\n .footer {\\n padding-top: 6rem;\\n padding-bottom: 6rem; } }\\n .footer a {\\n color: #181d25;\\n font-size: inherit;\\n font-weight: 400; }\\n .footer a:hover {\\n color: #3fd8b6; }\\n .footer a:active {\\n color: #26be9c; }\\n .footer .company {\\n margin-bottom: 2.5rem; }\\n @media (min-width: 601px) {\\n .footer .company {\\n margin-bottom: 0; } }\\n .footer .contact {\\n margin-bottom: 2.5rem; }\\n @media (min-width: 601px) {\\n .footer .contact {\\n margin-bottom: 0; } }\\n @media (max-width: 600px) {\\n .footer span {\\n display: block; } }\\n .footer .copyright,\\n .footer .privacy-policy {\\n margin-bottom: 0.5rem; }\\n .footer .divider {\\n display: inline-block;\\n margin: 0 0.5rem; }\\n @media (max-width: 600px) {\\n .footer .divider {\\n display: none; } }\\n\\n.gform_fields {\\n list-style: none;\\n margin-left: 0;\\n display: flex;\\n flex-flow: row wrap; }\\n .gform_fields > li {\\n margin-left: 0; }\\n\\n.gfield {\\n flex-basis: 100%;\\n margin-bottom: 1.5rem; }\\n .gfield_radio, .gfield_checkbox {\\n list-style: none;\\n margin-left: 0;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start; }\\n .gfield_radio > li, .gfield_checkbox > li {\\n margin-left: 0; }\\n .gfield_radio li, .gfield_checkbox li {\\n display: inline-flex;\\n align-items: center; }\\n .gfield_radio li > *, .gfield_checkbox li > * {\\n cursor: pointer; }\\n .gfield_label {\\n font-weight: 700;\\n display: none; }\\n .show-label .gfield_label {\\n display: block; }\\n .gfield.half-col {\\n flex-basis: calc(50% - 0.75rem);\\n margin-right: 1.5rem; }\\n .gfield.half-col + .gfield.half-col {\\n margin-right: 0; }\\n\\n.ginput_complex {\\n display: flex; }\\n .ginput_complex > span {\\n flex-basis: 100%; }\\n .ginput_complex > span:not(:last-child) {\\n margin-right: 1.5rem; }\\n .ginput_complex > span label {\\n font-size: 0.875rem; }\\n\\n.ss-main {\\n color: #181d25;\\n font-size: 1rem; }\\n .ss-main .ss-single-selected {\\n background-color: #fff;\\n border: #e6e6e6 2px solid;\\n border-radius: 0.25rem;\\n padding: 0.5rem 1rem 0.5rem 1.5rem;\\n transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n height: 2.75rem; }\\n .ss-main .ss-single-selected .placeholder {\\n line-height: 1.5; }\\n .ss-main .ss-single-selected .ss-arrow span {\\n border-color: #979797;\\n transition: all 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955); }\\n .ss-main .ss-single-selected .ss-arrow span.arrow-up {\\n margin: 4px 0 0;\\n transform: rotate(-45deg) scaleY(-1); }\\n .ss-main .ss-single-selected:hover, .ss-main .ss-single-selected:focus, .ss-main .ss-single-selected.ss-open-below {\\n border-color: #3fd8b6; }\\n .ss-main .ss-single-selected:hover .ss-arrow span, .ss-main .ss-single-selected:focus .ss-arrow span, .ss-main .ss-single-selected.ss-open-below .ss-arrow span {\\n border-color: #3fd8b6; }\\n .ss-main .ss-content {\\n border: 0;\\n border-radius: 0.25rem;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n margin: 1rem 0rem 0rem;\\n overflow: hidden; }\\n .ss-main .ss-content::before {\\n content: '';\\n background: red;\\n position: absolute;\\n bottom: 100%;\\n right: 1rem;\\n height: 1rem;\\n width: 2rem; }\\n .ss-main .ss-content .ss-list .ss-option {\\n padding: 0.5rem 1.5rem; }\\n .ss-main .ss-content .ss-list .ss-option:not(.ss-disabled):hover {\\n background-color: #f9f9fa;\\n color: #181d25; }\\n\\n.gallery {\\n text-align: center;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem; }\\n @media (min-width: 1201px) {\\n .gallery {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem; } }\\n .gallery__inner {\\n display: grid;\\n /* (1) */\\n grid-template-columns: repeat(2, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(2, 1fr);\\n /* (3) */\\n justify-content: space-between;\\n /* (5) */\\n margin-left: 16px;\\n margin-right: 16px; }\\n @media (min-width: 601px) {\\n .gallery__inner {\\n grid-template-columns: repeat(3, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */\\n margin-left: -8px;\\n margin-right: -8px; } }\\n @media (min-width: 901px) {\\n .gallery__inner {\\n grid-template-columns: repeat(4, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */ } }\\n @media (min-width: 1201px) {\\n .gallery__inner {\\n margin-left: -12px;\\n margin-right: -12px; } }\\n @media (min-width: 601px) {\\n [data-max=\\\"5\\\"] .gallery__inner {\\n grid-template-columns: repeat(3, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */ } }\\n @media (min-width: 901px) {\\n [data-max=\\\"5\\\"] .gallery__inner {\\n grid-template-columns: repeat(4, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(2, 1fr);\\n /* (3) */ } }\\n .gallery__image {\\n position: relative;\\n /* --columns: 2;\\n flex-basis: map-get($column-widths, 2);\\n margin-bottom: spacing();\\n\\n @include from(s) {\\n --columns: 3;\\n flex-basis: map-get($column-widths, 3);\\n margin-bottom: spacing(2);\\n }\\n\\n @include from(m) {\\n /* .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n --columns: 4;\\n flex-basis: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n --columns: 5;\\n flex-basis: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n --columns: 6;\\n flex-basis: map-get($column-widths, 6);\\n }\\n } */ }\\n .gallery__image:first-child {\\n grid-column: 1 / 3;\\n /* (6) */\\n grid-row: 1 / 3;\\n /* (7) */ }\\n @media (min-width: 901px) {\\n .gallery__image:first-child {\\n grid-column: 1 / 3;\\n /* (6) */\\n grid-row: 1 / 3;\\n /* (7) */ } }\\n .gallery[data-visible=\\\"6\\\"] .gallery__image:nth-child(n + 7) {\\n display: none; }\\n .gallery[data-visible=\\\"8\\\"] .gallery__image:nth-child(n + 9) {\\n display: none; }\\n .gallery[data-visible=\\\"10\\\"] .gallery__image:nth-child(n + 11) {\\n display: none; }\\n .gallery[data-visible=\\\"12\\\"] .gallery__image:nth-child(n + 13) {\\n display: none; }\\n .gallery__image .media[data-ratio=\\\"1:1\\\"] {\\n width: calc(100% - 16px);\\n height: calc(100% - 16px);\\n padding-bottom: calc(100% - 16px);\\n margin: 8px; }\\n @media (min-width: 1201px) {\\n .gallery__image .media[data-ratio=\\\"1:1\\\"] {\\n width: calc(100% - 24px);\\n height: calc(100% - 24px);\\n padding-bottom: calc(100% - 24px);\\n margin: 12px; } }\\n .gallery__image--hidden {\\n display: none; }\\n .gallery__more {\\n background: rgba(0, 0, 0, 0.5);\\n color: #fff;\\n pointer-events: none;\\n font-size: 2rem;\\n font-weight: 700;\\n position: absolute;\\n right: 0;\\n bottom: 0.5rem;\\n height: 0;\\n /* padding-bottom: map-get($column-widths, 2);\\n width: map-get($column-widths, 2);\\n\\n @include from(s) {\\n bottom: spacing(2);\\n padding-bottom: map-get($column-widths, 3);\\n width: map-get($column-widths, 3);\\n }\\n\\n @include from(m) {\\n .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n padding-bottom: map-get($column-widths, 4);\\n width: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n padding-bottom: map-get($column-widths, 5);\\n width: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n padding-bottom: map-get($column-widths, 6);\\n width: map-get($column-widths, 6);\\n }\\n } */ }\\n .gallery__extra {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%); }\\n\\n.hamburger {\\n cursor: pointer; }\\n .hamburger__box {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: space-between;\\n height: 0.75rem;\\n width: 1.125rem; }\\n .hamburger__layer {\\n background-color: #000;\\n display: block;\\n height: 0.125rem;\\n width: 100%; }\\n .nav-in-hero .header .hamburger__layer {\\n background-color: #fff; }\\n\\n.nav-in-hero .header,\\n.nav-in-hero--front.home .header, .nav-in-hero .header__inner,\\n.nav-in-hero--front.home .header__inner {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%; }\\n\\n.header__inner {\\n background-color: #fff;\\n height: 4rem;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n position: relative;\\n padding: 1rem 2rem;\\n transition: background-color 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n width: 100%;\\n z-index: 100; }\\n @media (min-width: 901px) {\\n .header__inner {\\n padding: 2rem;\\n height: 7rem; } }\\n .nav-in-hero .header__inner,\\n .nav-in-hero--front.home .header__inner {\\n background-color: transparent;\\n border: 0; }\\n .sticky-header .header .header__inner {\\n background-color: #fff;\\n border-bottom: #f9f9fa 1px solid;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n transform: translateY(-100%);\\n transition: transform 0s linear;\\n position: fixed; }\\n .sticky-header .header .header__inner.is-up, .sticky-header .header .header__inner.is-down {\\n transition: transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955); }\\n .sticky-header .header .header__inner.is-up {\\n transform: translateY(-100%); }\\n .sticky-header .header .header__inner.is-down {\\n transform: translateY(0); }\\n .header__inner .brand {\\n display: block;\\n position: relative;\\n height: 100%;\\n width: 5rem; }\\n @media (min-width: 1201px) {\\n .header__inner .brand {\\n width: 5rem; } }\\n .header__inner .brand .logo {\\n height: 100%;\\n width: auto; }\\n .header__inner .nav--primary {\\n flex-grow: 1; }\\n\\n.hero {\\n position: relative; }\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 20rem; }\\n @media (min-width: 601px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 25rem; } }\\n @media (min-width: 901px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 30rem; } }\\n @media (min-width: 1201px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 35rem; } }\\n .home .hero {\\n height: calc(100vh - 4rem);\\n min-height: 30rem; }\\n @media (min-width: 901px) {\\n .home .hero {\\n min-height: 35rem;\\n height: calc(100vh - 7rem); } }\\n @media (min-width: 1201px) {\\n .home .hero {\\n min-height: 45rem; } }\\n .home .hero .swiper-container {\\n width: 100%;\\n height: 100%;\\n position: absolute; }\\n .home .hero .swiper-container .swiper-slide {\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n justify-content: center; }\\n .home .hero .swiper-container .swiper-slide .hero__inner {\\n position: relative; }\\n .home .hero .swiper-container .slider__pagination {\\n position: absolute;\\n z-index: 2; }\\n .hero__wrap {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n position: relative;\\n height: 100%; }\\n .hero__media {\\n width: 100%;\\n z-index: -2; }\\n .hero--banner .hero__media {\\n order: 2; }\\n .hero.content-align--center .hero__content {\\n text-align: center; }\\n .hero.content-align--center .hero__content__inner {\\n margin: auto; }\\n .hero.content-align--right .hero__content {\\n text-align: right; }\\n .hero.content-align--right .hero__content__inner {\\n margin-right: 0;\\n margin-left: auto; }\\n .hero .bg-img::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out; }\\n .hero__video::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out; }\\n .hero__video + .hero__media .bg-img::after {\\n background-color: transparent; }\\n .hero__inner {\\n width: 100%;\\n z-index: 1; }\\n .hero__content {\\n display: block;\\n padding: 6rem 2rem;\\n color: #fff; }\\n @media (min-width: 901px) {\\n .hero__content {\\n padding: 9rem 5rem; } }\\n @media (min-width: 1201px) {\\n .hero__content {\\n padding: 12.5rem 5rem; } }\\n .hero__content > :last-child {\\n margin-bottom: 0; }\\n .home .hero__content__inner {\\n max-width: 40rem; }\\n .hero--full .hero__content {\\n color: #fff; }\\n .hero--banner .hero__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem;\\n padding-top: 1.5rem;\\n padding-bottom: 2.5rem;\\n width: 100%; }\\n @media (min-width: 1201px) {\\n .hero--banner .hero__content {\\n max-width: 70rem; } }\\n @media (min-width: 1801px) {\\n .hero--banner .hero__content {\\n max-width: 80rem; } }\\n @media (min-width: 901px) {\\n .hero--banner .hero__content {\\n padding-top: 3rem;\\n padding-bottom: 5rem; } }\\n .hero__content .meta {\\n margin-bottom: 2rem;\\n color: #fff; }\\n .hero__content .meta:last-child {\\n margin-bottom: 0; }\\n .hero__content .meta a {\\n color: #fff; }\\n .hero__content .meta a:hover, .hero__content .meta a:focus {\\n color: #3fd8b6; }\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n width: 100%; }\\n @media (min-width: 901px) {\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta {\\n display: none; } }\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links {\\n width: 100%;\\n display: flex; }\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button {\\n width: 100%;\\n text-align: center; }\\n @media (max-width: 600px) {\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button {\\n padding-left: 1rem;\\n padding-right: 1rem; } }\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button + .button {\\n margin-left: 1px; }\\n\\n.icon {\\n height: 1.5rem;\\n width: 1.5rem; }\\n .icon--large {\\n height: 2.5rem;\\n width: 2.5rem; }\\n\\n.fade-lazyload {\\n transition-property: opacity;\\n transition-duration: 0.3s;\\n transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n opacity: 0; }\\n .fade-lazyload.lazyloaded {\\n opacity: 1; }\\n\\n.list {\\n list-style: none;\\n margin-left: 0; }\\n .list > li {\\n margin-left: 0; }\\n .list__item {\\n border-top: #979797 2px solid;\\n display: flex;\\n padding: 1.5rem 0rem;\\n display: flex;\\n align-items: center;\\n justify-content: flex-start; }\\n .list__item__inner {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1; }\\n .list__item__icon {\\n fill: #3fd8b6;\\n line-height: 0;\\n position: relative;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-right: 1rem; }\\n .list__item__icon .icon {\\n position: absolute;\\n top: 50%;\\n left: 0;\\n transform: translate(0, -50%); }\\n .list__item.has-description .list__item__inner {\\n display: block; }\\n\\n.map__legend {\\n display: none; }\\n\\n.map__canvas {\\n height: 100vw; }\\n\\n@media (min-width: 601px) {\\n .map {\\n display: flex; }\\n .map__legend {\\n background-color: #fff;\\n display: block;\\n min-width: 25vw; }\\n .component.u-background-color--light + .map .map__legend {\\n background-color: #f9f9fa; }\\n .map__handler {\\n flex-grow: 1; }\\n .map__canvas {\\n height: 100%; } }\\n\\n.legend {\\n padding: 2rem; }\\n .legend__list {\\n list-style: none;\\n margin-left: 0; }\\n .legend__list > li {\\n margin-left: 0; }\\n .legend__pin {\\n border-top: #979797 2px solid;\\n display: flex;\\n padding: 1.5rem 0rem;\\n cursor: pointer;\\n transition: color 0.4s ease; }\\n .legend__pin__inner {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1; }\\n .legend__pin.is-active, .legend__pin:hover {\\n color: #3fd8b6; }\\n .legend__pin:active {\\n color: #2bd3ad; }\\n .legend__pin * {\\n pointer-events: none; }\\n\\n.media {\\n background-color: #313131;\\n position: relative;\\n height: auto;\\n padding-bottom: 100%;\\n overflow: hidden;\\n width: 100%; }\\n .media[data-ratio=\\\"1:1\\\"] {\\n padding-bottom: 100%; }\\n .media[data-ratio=\\\"16:9\\\"] {\\n padding-bottom: 56.25%; }\\n .media[data-ratio=\\\"21:9\\\"] {\\n padding-bottom: 42.85714%; }\\n .media * {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%; }\\n .media picture,\\n .media img {\\n object-fit: cover; }\\n\\n.meta {\\n display: flex;\\n line-height: 1.2; }\\n .meta__prop {\\n border-left: #979797 1px solid;\\n padding-left: 0.5rem;\\n margin-left: 0.5rem; }\\n .meta__prop:first-child {\\n border: none;\\n padding-left: 0;\\n margin-left: 0; }\\n .meta a {\\n color: #181d25;\\n font-weight: 400; }\\n .meta a:hover {\\n color: #3fd8b6; }\\n .meta a:active {\\n color: #26be9c; }\\n\\n.nav--mobile {\\n margin: 0;\\n padding: 0;\\n background: #fff;\\n border-left: 1px solid #e6e6e6;\\n overflow-x: hidden;\\n overflow-y: auto;\\n position: fixed;\\n top: 0;\\n right: 0;\\n -webkit-overflow-scrolling: touch;\\n transform: translateX(100%);\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n width: 100%;\\n height: 100%;\\n z-index: 1001; }\\n .nav--mobile .flyout__close {\\n padding: 0;\\n position: relative; }\\n .nav--mobile .nav__inner {\\n padding: 6rem 2rem;\\n position: relative; }\\n\\n@media (min-width: 601px) and (max-width: 900px) and (orientation: landscape) {\\n .nav--mobile .nav__inner {\\n padding: 6rem 2rem 2rem; } }\\n @media (min-width: 901px) {\\n .nav--mobile .nav__inner {\\n padding: 10rem 4rem; } }\\n @media (min-width: 1201px) {\\n .nav--mobile .nav__inner {\\n padding: 11.5rem 5rem; } }\\n .nav--mobile a {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n transform: translateZ(0);\\n transition: transform 0.3s, opacity 0.3s, color 0.4s ease;\\n will-change: transform, opacity;\\n white-space: nowrap; }\\n .no-js .nav--mobile {\\n position: relative;\\n height: auto;\\n width: 100%;\\n overflow: visible;\\n visibility: visible;\\n z-index: 2; }\\n .nav--mobile__contact {\\n padding-top: 2rem; }\\n .nav--mobile__contact .contact-info {\\n text-align: left; }\\n .nav--mobile__contact .contact-info > ul {\\n margin-bottom: 0; }\\n .nav--mobile__contact .contact-info > ul li {\\n padding: 0.5rem 0rem; }\\n .nav--mobile__buttons {\\n padding-top: 4rem;\\n text-align: center; }\\n .nav--mobile__buttons .button {\\n margin-bottom: 0.5rem;\\n width: 90%; }\\n .nav--mobile__social {\\n margin-top: 2rem; }\\n .nav--mobile__social .social {\\n margin-bottom: 0; }\\n .nav--mobile .links .button {\\n display: block;\\n text-align: center;\\n max-width: 350px; }\\n .nav--mobile .links .button + .button {\\n margin-top: 1rem; }\\n .nav--mobile .nav__footer {\\n margin-top: 4rem; }\\n\\n.menu--desktop {\\n list-style: none;\\n margin-left: 0;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n width: 100%; }\\n .menu--desktop > li {\\n margin-left: 0; }\\n .menu--desktop .menu__item {\\n line-height: 1.5;\\n margin-right: 3rem;\\n position: relative; }\\n .menu--desktop .menu__item--parent-link > .icon {\\n content: url(../images/symbols/chevron-up.svg);\\n fill: #181d25;\\n display: block;\\n height: 1.5rem;\\n width: 1.5rem;\\n transform: translate(-50%, 0) scaleY(-1);\\n transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), fill 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n z-index: 15; }\\n .nav-in-hero:not(.sticky-header) .menu--desktop .menu__item--parent-link > .icon {\\n fill: #fff; }\\n .menu--desktop .menu__item--parent-link.is-expanded > .icon {\\n transform: translate(-50%, 0) scaleY(1); }\\n .nav-in-hero:not(.sticky-header) .menu--desktop .menu__item--parent-link.is-expanded > .icon {\\n fill: #181d25; }\\n .menu--desktop .menu__item a {\\n color: #181d25;\\n display: block;\\n font-weight: 400; }\\n .menu--desktop .menu__item a:hover {\\n color: #3fd8b6; }\\n .nav-in-hero:not(.sticky-header) .menu--desktop .menu__item a {\\n color: #fff; }\\n .nav-in-hero:not(.sticky-header) .menu--desktop .menu__item a:hover {\\n color: #3fd8b6; }\\n .menu--desktop .menu__item .sub-menu {\\n background-color: #fff;\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n opacity: 0;\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n margin: 0;\\n list-style: none;\\n margin-top: 1.25rem;\\n min-width: 11rem;\\n padding: 1.5rem 2rem;\\n transform: translate(-50%, 1rem);\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n width: rem-calc(400);\\n visibility: hidden;\\n z-index: 10; }\\n .menu--desktop .menu__item .sub-menu::before {\\n content: '';\\n background-color: #fff;\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 1.25rem;\\n width: 2.25rem;\\n left: 50%;\\n position: absolute;\\n bottom: 100%;\\n transform: translateX(-50%) translateY(100%);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955); }\\n .menu--desktop .menu__item .sub-menu .menu__item {\\n line-height: 1.2;\\n margin-bottom: 1.5rem; }\\n .menu--desktop .menu__item .sub-menu .menu__item:last-child {\\n margin-bottom: 0; }\\n .menu--desktop .menu__item .sub-menu .menu__item a,\\n .nav-in-hero:not(.sticky-header) .menu--desktop .menu__item .sub-menu .menu__item a {\\n color: #181d25; }\\n .menu--desktop .menu__item .sub-menu .menu__item a:hover,\\n .nav-in-hero:not(.sticky-header) .menu--desktop .menu__item .sub-menu .menu__item a:hover {\\n color: #3fd8b6; }\\n .menu--desktop .menu__item.is-expanded .sub-menu {\\n opacity: 1;\\n transform: translate(-50%, 0);\\n visibility: visible; }\\n .menu--desktop .menu__item.is-expanded .sub-menu::before {\\n transform: translateX(-50%); }\\n\\n.menu--mobile {\\n position: relative; }\\n .menu--mobile .menu__wrap {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n width: 100%; }\\n .menu--mobile .menu__level {\\n background: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n overflow: hidden;\\n list-style-type: none;\\n height: auto;\\n visibility: hidden;\\n margin: 0;\\n padding: 0;\\n width: 100%; }\\n .menu--mobile .menu__level--current {\\n visibility: visible; }\\n .menu--mobile .menu__level.animate-outToRight .menu__item {\\n animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1); }\\n .menu--mobile .menu__level.animate-outToLeft .menu__item {\\n animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1); }\\n .menu--mobile .menu__level.animate-inFromLeft .menu__item {\\n animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1); }\\n .menu--mobile .menu__level.animate-inFromRight .menu__item {\\n animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1); }\\n .menu--mobile .menu__item {\\n display: block;\\n margin: 0; }\\n .menu--mobile .menu__item:last-child .menu__link {\\n border-bottom: 0; }\\n .menu--mobile .menu__link {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n color: #181d25;\\n fill: #181d25;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1;\\n position: relative;\\n padding: 0.5rem 0rem;\\n text-transform: none; }\\n .menu--mobile .menu__link > * {\\n pointer-events: none; }\\n .menu--mobile .menu__link .icon {\\n height: 1.25rem;\\n width: 1.25rem;\\n margin-left: 0.5rem; }\\n .menu--mobile .menu__link:hover {\\n color: #3fd8b6;\\n fill: #3fd8b6; }\\n .menu--mobile .menu__back {\\n background: #fff;\\n color: #181d25;\\n cursor: pointer;\\n border: 0;\\n bottom: 100%;\\n right: 0;\\n top: -4.5rem;\\n display: flex;\\n align-items: center;\\n font-weight: 700;\\n line-height: 2.5;\\n height: 2rem;\\n padding: 0;\\n position: absolute;\\n opacity: 1;\\n transform: translateX(0);\\n transition: transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), color 0.4s ease;\\n z-index: 100; }\\n @media (min-width: 901px) {\\n .menu--mobile .menu__back {\\n top: -7.5rem;\\n right: -2rem; } }\\n .menu--mobile .menu__back.is-hidden {\\n pointer-events: none;\\n opacity: 0;\\n transform: translateX(20px); }\\n .menu--mobile .menu__back .icon {\\n fill: #181d25;\\n transition: fill 0.4s ease; }\\n .menu--mobile .menu__back:hover, .menu--mobile .menu__back:focus {\\n color: #3fd8b6;\\n outline: none; }\\n .menu--mobile .menu__back:hover .icon, .menu--mobile .menu__back:focus .icon {\\n fill: #3fd8b6; }\\n .menu--mobile [class^='animate-'],\\n .menu--mobile [class*=' animate-'] {\\n visibility: visible; }\\n\\n.content,\\n.main {\\n position: relative; }\\n\\n.page__header {\\n padding: 2.5rem 2rem 0rem; }\\n @media (min-width: 601px) {\\n .page__header {\\n padding: 2.5rem 0rem 0rem; } }\\n\\n.page__inner {\\n display: block;\\n padding: 0rem 2rem; }\\n @media (min-width: 901px) {\\n .page__inner {\\n padding: 0rem 5rem; } }\\n @media (min-width: 1201px) {\\n .page__inner {\\n padding: 0rem 5rem; } }\\n .page__inner > :last-child {\\n margin-bottom: 0; }\\n\\n.page__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem; }\\n @media (min-width: 1201px) {\\n .page__content {\\n max-width: 70rem; } }\\n @media (min-width: 1801px) {\\n .page__content {\\n max-width: 80rem; } }\\n\\n.page__body {\\n padding-top: 2rem; }\\n @media (min-width: 601px) {\\n .page__body {\\n padding-top: 5rem; } }\\n\\n.wp-pagenavi {\\n display: flex;\\n justify-content: center;\\n margin-top: 2.5rem; }\\n .wp-pagenavi .pages {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 1px !important; }\\n .wp-pagenavi a,\\n .wp-pagenavi span {\\n border: 0;\\n color: #181d25;\\n margin: 0 0.5rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 2rem;\\n width: 2rem; }\\n .wp-pagenavi a:hover {\\n color: #3fd8b6; }\\n .wp-pagenavi .current {\\n background: #3fd8b6;\\n color: #fff;\\n font-weight: 700; }\\n .wp-pagenavi .extend {\\n display: none; }\\n .wp-pagenavi .previouspostslink,\\n .wp-pagenavi .nextpostslink {\\n display: block;\\n overflow: hidden;\\n text-indent: 101%;\\n white-space: nowrap; }\\n .wp-pagenavi .previouspostslink {\\n position: relative; }\\n .wp-pagenavi .previouspostslink::before, .wp-pagenavi .previouspostslink::after {\\n content: '';\\n border-radius: 0.0625em;\\n display: block;\\n position: absolute;\\n left: 50%;\\n background-color: #4a4a4a;\\n transition: background-color 0.4s ease;\\n height: 0.125em;\\n width: 0.5em; }\\n .wp-pagenavi .previouspostslink::before {\\n bottom: 50%;\\n transform: translate(-50%, -0.1em) rotate(-45deg); }\\n .wp-pagenavi .previouspostslink::after {\\n top: 50%;\\n transform: translate(-50%, 0.1em) rotate(45deg); }\\n .wp-pagenavi .previouspostslink:hover::before, .wp-pagenavi .previouspostslink:hover::after {\\n background-color: #3fd8b6; }\\n .wp-pagenavi .nextpostslink {\\n position: relative; }\\n .wp-pagenavi .nextpostslink::before, .wp-pagenavi .nextpostslink::after {\\n content: '';\\n border-radius: 0.0625em;\\n display: block;\\n position: absolute;\\n left: 50%;\\n background-color: #4a4a4a;\\n transition: background-color 0.4s ease;\\n height: 0.125em;\\n width: 0.5em; }\\n .wp-pagenavi .nextpostslink::before {\\n bottom: 50%;\\n transform: translate(-50%, -0.1em) rotate(45deg); }\\n .wp-pagenavi .nextpostslink::after {\\n top: 50%;\\n transform: translate(-50%, 0.1em) rotate(-45deg); }\\n .wp-pagenavi .nextpostslink:hover::before, .wp-pagenavi .nextpostslink:hover::after {\\n background-color: #3fd8b6; }\\n\\n.featured-posts__list {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center; }\\n @media (min-width: 601px) {\\n .featured-posts__list {\\n justify-content: flex-start; } }\\n\\n@media (max-width: 1800px) {\\n .featured-posts .post:nth-child(5) {\\n display: none; } }\\n\\n@media (max-width: 1200px) {\\n .featured-posts .post:nth-child(4) {\\n display: none; } }\\n\\n@media (max-width: 900px) {\\n .featured-posts .post:nth-child(3) {\\n display: none; } }\\n\\n.post__inner {\\n display: block;\\n padding: 6rem 2rem; }\\n @media (min-width: 901px) {\\n .post__inner {\\n padding: 9rem 5rem; } }\\n @media (min-width: 1201px) {\\n .post__inner {\\n padding: 12.5rem 5rem; } }\\n .post__inner > :last-child {\\n margin-bottom: 0; }\\n\\n.post__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 40rem; }\\n .post__content picture {\\n margin-bottom: 1.5rem; }\\n\\n.post--teaser {\\n flex-basis: 100%;\\n color: #181d25;\\n display: block;\\n font-weight: 400;\\n text-align: left;\\n margin-bottom: 2.5rem; }\\n @media (min-width: 601px) {\\n .post--teaser {\\n flex-basis: calc(50% - 1rem);\\n margin-right: 2rem; }\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 0; } }\\n @media (min-width: 901px) {\\n .post--teaser {\\n flex-basis: calc(33.33333% - 0.66667rem);\\n margin-right: 1rem; }\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 1rem; }\\n .post--teaser:nth-of-type(3n) {\\n margin-right: 0; } }\\n @media (min-width: 1201px) {\\n .post--teaser {\\n flex-basis: calc(33.33333% - 3.33333rem);\\n margin-right: 5rem; }\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 5rem; } }\\n .post--teaser:last-child {\\n margin-bottom: 0; }\\n .post--teaser .post__content {\\n padding-top: 2.5rem; }\\n .post--teaser .meta {\\n font-size: 0.875rem;\\n margin-bottom: 0.5rem; }\\n .post--teaser.post--featured {\\n margin-right: 0; }\\n .post--teaser.post--featured .post__content {\\n margin-right: 0;\\n margin-left: 0; }\\n\\n.slider {\\n text-align: center; }\\n @media (min-width: 601px) {\\n .slider {\\n padding-top: 24px; } }\\n .slider.has-previews .swiper-slide {\\n height: calc(100% - 4rem);\\n width: calc(100% - 4rem);\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transform: scale(0.9);\\n transform-origin: right center; }\\n .slider.has-previews .swiper-slide.swiper-slide-active, .slider.has-previews .swiper-slide.swiper-slide-duplicate-active {\\n transform: scale(1); }\\n .slider.has-previews .swiper-slide.swiper-slide-active,\\n .slider.has-previews .swiper-slide.swiper-slide-active ~ .swiper-slide {\\n transform-origin: left center; }\\n @media (min-width: 601px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(70% - 2rem);\\n width: calc(70% - 2rem); } }\\n @media (min-width: 901px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(33.33333% - 2.5rem);\\n width: calc(33.33333% - 2.5rem); }\\n .slider.has-previews .swiper-slide.swiper-slide-prev, .slider.has-previews .swiper-slide.swiper-slide-active, .slider.has-previews .swiper-slide.swiper-slide-next, .slider.has-previews .swiper-slide.swiper-slide-duplicate-prev, .slider.has-previews .swiper-slide.swiper-slide-duplicate-active, .slider.has-previews .swiper-slide.swiper-slide-duplicate-next {\\n transform: scale(1); } }\\n @media (min-width: 1201px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(25% - (3 / 4) * 1rem);\\n width: calc(25% - (3 / 4) * 1rem);\\n transform: scale(1); } }\\n .slider__navigation {\\n cursor: pointer;\\n fill: rgba(255, 255, 255, 0.5);\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n transition: fill 0.4s ease;\\n line-height: 0;\\n z-index: 1; }\\n .slider__navigation .icon {\\n height: 4rem;\\n width: 4rem; }\\n .slider__navigation--previous {\\n left: 0; }\\n .slider__navigation--next {\\n right: 0; }\\n .slider__navigation:hover {\\n fill: #3fd8b6; }\\n .slider__navigation.swiper-button-disabled {\\n cursor: default;\\n fill: rgba(255, 255, 255, 0.2); }\\n .slider__pagination {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 1rem 0rem; }\\n .slider__bullet {\\n background-color: #e6e6e6;\\n border-radius: 100%;\\n box-shadow: inset 0 0 0 0.375rem transparent;\\n cursor: pointer;\\n display: block;\\n height: 0.75rem;\\n width: 0.75rem;\\n margin: 0rem 0.25rem;\\n transition: box-shadow 0.3s ease; }\\n .slider__bullet:hover, .slider__bullet:focus {\\n box-shadow: inset 0 0 0 0.375rem #3fd8b6; }\\n .slider__bullet.is-active {\\n box-shadow: inset 0 0 0 2px #3fd8b6; }\\n\\n.social {\\n display: flex; }\\n .social__link {\\n line-height: 0;\\n margin-right: 1rem; }\\n .social__link:last-child {\\n margin-right: 0; }\\n\\n.table {\\n text-align: center; }\\n .table__content {\\n text-align: left;\\n width: 100%; }\\n .table__content th, .table__content td {\\n padding: 1rem 1.5rem; }\\n @media (max-width: 600px) {\\n .table__content th:first-child, .table__content td:first-child {\\n background-color: #303134;\\n color: #fff; } }\\n .table__content thead {\\n background-color: #303134;\\n color: #fff; }\\n .table__content thead th {\\n display: none;\\n font-weight: 700; }\\n @media (min-width: 601px) {\\n .table__content thead th {\\n display: table-cell; } }\\n .table__content tbody tr:nth-child(odd) {\\n background-color: #f4f4f5; }\\n .table__content tbody tr:nth-child(even) {\\n background-color: #eaeaea; }\\n .table__content tbody td:first-child {\\n font-weight: 700; }\\n @media (max-width: 600px) {\\n .table__content tbody td {\\n display: block; }\\n .table__content tbody td::before {\\n content: attr(data-th) \\\": \\\";\\n font-weight: bold;\\n display: inline-block;\\n width: 50%; } }\\n\\n.team__list {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center; }\\n @media (min-width: 601px) {\\n .team__list {\\n justify-content: flex-start; } }\\n\\n.team-member__head-shot {\\n overflow: hidden;\\n max-width: 8rem;\\n margin: 0 0 1.5rem; }\\n\\n.team-member--teaser {\\n flex-basis: 100%;\\n color: #181d25;\\n display: block;\\n margin-bottom: 2.5rem;\\n text-align: left;\\n flex-basis: calc(50% - 0.5rem); }\\n @media (min-width: 601px) {\\n .team-member--teaser {\\n flex-basis: calc(50% - 1rem);\\n margin-right: 2rem; }\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 0; } }\\n @media (min-width: 901px) {\\n .team-member--teaser {\\n flex-basis: calc(33.33333% - 0.66667rem);\\n margin-right: 1rem; }\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 1rem; }\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 0; } }\\n @media (min-width: 1201px) {\\n .team-member--teaser {\\n flex-basis: calc(33.33333% - 3.33333rem);\\n margin-right: 5rem; }\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 5rem; } }\\n .team-member--teaser:nth-of-type(2n) {\\n margin-left: 1rem; }\\n @media (min-width: 601px) {\\n .team-member--teaser {\\n flex-basis: calc(33.33333% - 1.33333rem);\\n margin-right: 2rem; }\\n .team-member--teaser:nth-of-type(2n) {\\n margin-left: 0;\\n margin-right: 2rem; }\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 0; } }\\n @media (min-width: 1201px) {\\n .team-member--teaser {\\n flex-basis: calc(25% - 3.75rem);\\n margin-right: 5rem; }\\n .team-member--teaser:nth-of-type(2n), .team-member--teaser:nth-of-type(3n) {\\n margin-right: 5rem; }\\n .team-member--teaser:nth-of-type(4n) {\\n margin-right: 0; } }\\n .team-member--teaser .team-member__title {\\n margin-top: -1rem; }\\n\\n@media (min-width: 601px) {\\n .text-image .text-image__wrapper {\\n display: flex; } }\\n\\n@media (min-width: 601px) {\\n .text-image__image, .text-image__content {\\n flex: 0 0 50%; } }\\n\\n@media (min-width: 601px) {\\n .text-image__content {\\n display: flex;\\n align-items: center; } }\\n\\n@media (min-width: 601px) {\\n .text-image__inner {\\n padding-left: 2rem; } }\\n\\n@media (min-width: 1201px) {\\n .text-image__inner {\\n padding-left: 4rem; } }\\n\\n.text-image__image {\\n margin-bottom: 2rem; }\\n @media (min-width: 601px) {\\n .text-image__image {\\n margin-bottom: 0; } }\\n .text-image__image .image-container {\\n position: relative;\\n padding-right: 1rem; }\\n @media (min-width: 901px) {\\n .text-image__image .image-container {\\n padding-right: 2rem; } }\\n .text-image__image .image-container::before, .text-image__image .image-container::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n content: \\\"\\\";\\n height: 100%;\\n background-color: #ececec;\\n width: 5px; }\\n .text-image__image .image-container::before {\\n display: none; }\\n .text-image__image .image-container::after {\\n background-color: #3fd8b6;\\n height: 80%; }\\n .text-image__image .image-container__inner {\\n position: relative;\\n width: 100%;\\n padding-bottom: 65%; }\\n .text-image__image .image-container__inner img {\\n box-shadow: 0 0 20px #cecece;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n object-fit: cover; }\\n\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image {\\n order: 2; }\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container {\\n padding-left: 1rem; }\\n @media (min-width: 901px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container {\\n padding-left: 2rem; } }\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container::before, .text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container::after {\\n left: 0;\\n right: auto; }\\n\\n@media (min-width: 601px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__inner {\\n padding-left: 0;\\n padding-right: 2rem; } }\\n\\n@media (min-width: 1201px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__inner {\\n padding-right: 4rem; } }\\n\\n.tiles {\\n display: flex;\\n flex-direction: column; }\\n @media (min-width: 601px) {\\n .tiles {\\n flex-direction: row; } }\\n .tiles__image {\\n position: relative;\\n height: 100vw; }\\n @media (max-width: 600px) {\\n .tiles__image {\\n order: 2; } }\\n @media (max-width: 1200px) {\\n .tiles__image {\\n min-height: 49vw; }\\n .tiles__image img {\\n object-fit: cover;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%; } }\\n @media (min-width: 601px) {\\n .tiles__image {\\n height: auto;\\n width: 50%; } }\\n .tiles[data-alignment=\\\"left\\\"] .tiles__image {\\n order: 2; }\\n .tiles__inner {\\n display: flex;\\n flex-direction: column;\\n justify-content: center; }\\n @media (min-width: 601px) and (max-width: 900px) {\\n .tiles__inner {\\n padding: 2rem; } }\\n @media (min-width: 601px) {\\n .tiles__inner {\\n width: 50%; } }\\n @media (min-width: 1201px) {\\n .tiles__inner {\\n padding-right: 8rem;\\n padding-left: 8rem; } }\\n\\nh1 + .button, h2 + .button, h3 + .button, h4 + .button, h5 + .button, h6 + .button, p + .button, ul + .button, ol + .button {\\n margin-top: 3.5rem; }\\n\\n.small {\\n font-size: 0.75rem; }\\n\\n.u-box {\\n display: block;\\n padding: 6rem 2rem; }\\n @media (min-width: 901px) {\\n .u-box {\\n padding: 9rem 5rem; } }\\n @media (min-width: 1201px) {\\n .u-box {\\n padding: 12.5rem 5rem; } }\\n .u-box > :last-child {\\n margin-bottom: 0; }\\n\\n/* ==========================================================================\\n #CLEARFIX\\n ========================================================================== */\\n/**\\n * Attach our clearfix mixin to a utility class.\\n */\\n.u-clearfix::after {\\n content: \\\"\\\";\\n display: block;\\n clear: both; }\\n\\n/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n.u-hidden-visually {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 1px !important; }\\n\\n/**\\n * Hide visually and from screen readers.\\n */\\n.u-hidden {\\n display: none !important; }\\n\\n/**\\n * Hide on small screens\\n */\\n@media (max-width: 900px) {\\n .u-hidden-small {\\n display: none; } }\\n\\n/**\\n * Hide on large screens\\n */\\n@media (min-width: 901px) {\\n .u-hidden-large {\\n display: none; } }\\n\\n.u-text-align--left {\\n text-align: left; }\\n\\n.u-text-align--center {\\n text-align: center; }\\n\\n.u-text-align--right {\\n text-align: right; }\\n\\n/* ==========================================================================\\n #WRAPPER\\n ========================================================================== */\\n/**\\n * Page-level constraining and wrapping elements.\\n */\\n.u-content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 40rem; }\\n .u-content picture {\\n margin-bottom: 1.5rem; }\\n\\n.u-wrapper {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem; }\\n @media (min-width: 1201px) {\\n .u-wrapper {\\n max-width: 70rem; } }\\n @media (min-width: 1801px) {\\n .u-wrapper {\\n max-width: 80rem; } }\\n\\n.u-wrapper--narrow {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 70rem; }\\n @media (min-width: 1801px) {\\n .u-wrapper--narrow {\\n max-width: 80rem; } }\\n\\n.u-box {\\n display: block;\\n padding: 6rem 2rem; }\\n @media (min-width: 901px) {\\n .u-box {\\n padding: 9rem 5rem; } }\\n @media (min-width: 1201px) {\\n .u-box {\\n padding: 12.5rem 5rem; } }\\n .u-box > :last-child {\\n margin-bottom: 0; }\\n\\n/*!\\n * baguetteBox.js\\n * @author feimosi\\n * @version 1.10.0\\n * @url https://github.com/feimosi/baguetteBox.js\\n */\\n#baguetteBox-overlay {\\n display: none;\\n opacity: 0;\\n position: fixed;\\n overflow: hidden;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: 1000000;\\n background-color: #222;\\n background-color: rgba(0, 0, 0, 0.8);\\n -webkit-transition: opacity .5s ease;\\n transition: opacity .5s ease; }\\n\\n#baguetteBox-overlay.visible {\\n opacity: 1; }\\n\\n#baguetteBox-overlay .full-image {\\n display: inline-block;\\n position: relative;\\n width: 100%;\\n height: 100%;\\n text-align: center; }\\n\\n#baguetteBox-overlay .full-image figure {\\n display: inline;\\n margin: 0;\\n height: 100%; }\\n\\n#baguetteBox-overlay .full-image img {\\n display: inline-block;\\n width: auto;\\n height: auto;\\n max-height: 100%;\\n max-width: 100%;\\n vertical-align: middle;\\n -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\\n -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); }\\n\\n#baguetteBox-overlay .full-image figcaption {\\n display: block;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n text-align: center;\\n line-height: 1.8;\\n white-space: normal;\\n color: #ccc;\\n background-color: #000;\\n background-color: rgba(0, 0, 0, 0.6);\\n font-family: sans-serif; }\\n\\n#baguetteBox-overlay .full-image:before {\\n content: \\\"\\\";\\n display: inline-block;\\n height: 50%;\\n width: 1px;\\n margin-right: -1px; }\\n\\n#baguetteBox-slider {\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100%;\\n width: 100%;\\n white-space: nowrap;\\n -webkit-transition: left .4s ease,-webkit-transform .4s ease;\\n transition: left .4s ease,-webkit-transform .4s ease;\\n transition: left .4s ease,transform .4s ease;\\n transition: left .4s ease,transform .4s ease,-webkit-transform .4s ease,-moz-transform .4s ease; }\\n\\n#baguetteBox-slider.bounce-from-right {\\n -webkit-animation: bounceFromRight .4s ease-out;\\n animation: bounceFromRight .4s ease-out; }\\n\\n#baguetteBox-slider.bounce-from-left {\\n -webkit-animation: bounceFromLeft .4s ease-out;\\n animation: bounceFromLeft .4s ease-out; }\\n\\n@-webkit-keyframes bounceFromRight {\\n 0%, 100% {\\n margin-left: 0; }\\n 50% {\\n margin-left: -30px; } }\\n\\n@keyframes bounceFromRight {\\n 0%, 100% {\\n margin-left: 0; }\\n 50% {\\n margin-left: -30px; } }\\n\\n@-webkit-keyframes bounceFromLeft {\\n 0%, 100% {\\n margin-left: 0; }\\n 50% {\\n margin-left: 30px; } }\\n\\n@keyframes bounceFromLeft {\\n 0%, 100% {\\n margin-left: 0; }\\n 50% {\\n margin-left: 30px; } }\\n\\n.baguetteBox-button#next-button, .baguetteBox-button#previous-button {\\n top: 50%;\\n top: calc(50% - 30px);\\n width: 44px;\\n height: 60px; }\\n\\n.baguetteBox-button {\\n position: absolute;\\n cursor: pointer;\\n outline: 0;\\n padding: 0;\\n margin: 0;\\n border: 0;\\n -moz-border-radius: 15%;\\n border-radius: 15%;\\n background-color: #323232;\\n background-color: rgba(50, 50, 50, 0.5);\\n color: #ddd;\\n font: 1.6em sans-serif;\\n -webkit-transition: background-color .4s ease;\\n transition: background-color .4s ease; }\\n\\n.baguetteBox-button:focus, .baguetteBox-button:hover {\\n background-color: rgba(50, 50, 50, 0.9); }\\n\\n.baguetteBox-button#next-button {\\n right: 2%; }\\n\\n.baguetteBox-button#previous-button {\\n left: 2%; }\\n\\n.baguetteBox-button#close-button {\\n top: 20px;\\n right: 2%;\\n right: calc(2% + 6px);\\n width: 30px;\\n height: 30px; }\\n\\n.baguetteBox-button svg {\\n position: absolute;\\n left: 0;\\n top: 0; }\\n\\n.baguetteBox-spinner {\\n width: 40px;\\n height: 40px;\\n display: inline-block;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -20px;\\n margin-left: -20px; }\\n\\n.baguetteBox-double-bounce1, .baguetteBox-double-bounce2 {\\n width: 100%;\\n height: 100%;\\n -moz-border-radius: 50%;\\n border-radius: 50%;\\n background-color: #fff;\\n opacity: .6;\\n position: absolute;\\n top: 0;\\n left: 0;\\n -webkit-animation: bounce 2s infinite ease-in-out;\\n animation: bounce 2s infinite ease-in-out; }\\n\\n.baguetteBox-double-bounce2 {\\n -webkit-animation-delay: -1s;\\n animation-delay: -1s; }\\n\\n@-webkit-keyframes bounce {\\n 0%, 100% {\\n -webkit-transform: scale(0);\\n transform: scale(0); }\\n 50% {\\n -webkit-transform: scale(1);\\n transform: scale(1); } }\\n\\n@keyframes bounce {\\n 0%, 100% {\\n -webkit-transform: scale(0);\\n -moz-transform: scale(0);\\n transform: scale(0); }\\n 50% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n transform: scale(1); } }\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc291cmNlcy9hc3NldHMvc3R5bGVzL21haW4uc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL3Rvb2xzL190b29scy5hbmltYXRpb24uc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL3Rvb2xzL190b29scy5jbGVhcmZpeC5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvdG9vbHMvX3Rvb2xzLmZ1bmN0aW9ucy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvdG9vbHMvX3Rvb2xzLmhpZGUuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL3Rvb2xzL190b29scy5wYWxldHRlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy90b29scy9fdG9vbHMuc3ltYm9scy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvc2V0dGluZ3MvX3NldHRpbmdzLmNvbmZpZy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvc2V0dGluZ3MvX3NldHRpbmdzLmNvbnN0YW50cy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvc2V0dGluZ3MvX3NldHRpbmdzLmdsb2JhbC5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9fYnJlYWtwb2ludC5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19zZXR0aW5ncy5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19jb250ZXh0LnNjc3MiLCJub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2hlbHBlcnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcGFyc2Vycy5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3F1ZXJ5LnNjc3MiLCJub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fc2luZ2xlLnNjc3MiLCJub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9zaW5nbGUvX2RlZmF1bHQuc2NzcyIsIm5vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19kb3VibGUuc2NzcyIsIm5vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZGVmYXVsdC1wYWlyLnNjc3MiLCJub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RvdWJsZS1zdHJpbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZGVmYXVsdC5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3RyaXBsZS5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvdHJpcGxlL19kZWZhdWx0LnNjc3MiLCJub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fcmVzb2x1dGlvbi5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvcmVzb2x1dGlvbi9fcmVzb2x1dGlvbi5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19uby1xdWVyeS5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19yZXNwb25kLXRvLnNjc3MiLCJub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2xlZ2FjeS1zZXR0aW5ncy5zY3NzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2xpY2VyL3N0eWxlc2hlZXRzL19icmVha3BvaW50LXNsaWNlci5zYXNzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2xpY2VyL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQtc2xpY2VyL192YXJpYWJsZXMuc2FzcyIsIm5vZGVfbW9kdWxlcy9icmVha3BvaW50LXNsaWNlci9zdHlsZXNoZWV0cy9icmVha3BvaW50LXNsaWNlci9faGVscGVyLWZ1bmN0aW9ucy5zYXNzIiwibm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2xpY2VyL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQtc2xpY2VyL19taXhpbnMuc2FzcyIsIm5vZGVfbW9kdWxlcy9zd2lwZXIvZGlzdC9jc3Mvc3dpcGVyLm1pbi5jc3MiLCJub2RlX21vZHVsZXMvc2xpbS1zZWxlY3QvZGlzdC9zbGltc2VsZWN0Lm1pbi5jc3MiLCJub2RlX21vZHVsZXMvbm9ybWFsaXplLmNzcy9ub3JtYWxpemUuY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvZ2VuZXJpYy9fZ2VuZXJpYy5yZXNldC5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvZ2VuZXJpYy9fZ2VuZXJpYy5zaGFyZWQuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2dlbmVyaWMvX2dlbmVyaWMucHJpbnQuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL29iamVjdHMvX29iamVjdHMuYmxvY2suc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL29iamVjdHMvX29iamVjdHMuYm94LnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9vYmplY3RzL19vYmplY3RzLmJ1dHRvbi5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvb2JqZWN0cy9fb2JqZWN0cy5mb3JtLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9vYmplY3RzL19vYmplY3RzLmxpc3Quc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL29iamVjdHMvX29iamVjdHMubWVkaWEuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL29iamVjdHMvX29iamVjdHMub3ZlcmxheS5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvb2JqZWN0cy9fb2JqZWN0cy50cmlhbmdsZS5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvb2JqZWN0cy9fb2JqZWN0cy50eXBlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9vYmplY3RzL19vYmplY3RzLndyYXBwZXIuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2VsZW1lbnRzL19lbGVtZW50cy5ibG9ja3F1b3RlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9lbGVtZW50cy9fZWxlbWVudHMuZm9ybS5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvZWxlbWVudHMvX2VsZW1lbnRzLmltYWdlcy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvZWxlbWVudHMvX2VsZW1lbnRzLnBhZ2Uuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2VsZW1lbnRzL19lbGVtZW50cy50YWJsZXMuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2VsZW1lbnRzL19lbGVtZW50cy50eXBlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmFjY29yZGlvbi5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5hcmNoaXZlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmJhY2tncm91bmQtaW1hZ2Uuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMuYmFubmVyLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmJ1dHRvbi5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5jb2x1bW5zLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmNvbXBhbnkuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMuY29tcG9uZW50LnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmNvbnRhY3Quc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMuZmVhdHVyZWQtYmFyLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmZlYXR1cmVkLWJsb2Nrcy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5maWx0ZXIuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMuZmx5b3V0LnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmZvb3Rlci5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5mb3JtLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmdhbGxlcnkuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMuaGFtYnVyZ2VyLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmhlYWRlci5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5oZXJvLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmltYWdlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLmxpc3Quc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMubWFwLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLm1lZGlhLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLm1ldGEuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMubmF2LnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLnBhZ2Uuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMucGFnaW5hdGlvbi5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5wb3N0LnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLnNsaWRlci5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5zb2NpYWwuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMudGFibGUuc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvX2NvbXBvbmVudHMudGVhbS5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy50ZXh0LWFuZC1pbWFnZS5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy50aWxlcy5zY3NzIiwicmVzb3VyY2VzL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy50eXBlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL19jb21wb25lbnRzLnZpZGVvLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL193cC1jbGFzc2VzLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy91dGlsaXRpZXMvX3V0aWxpdGllcy5ib3guc2NzcyIsInJlc291cmNlcy9hc3NldHMvc3R5bGVzL3V0aWxpdGllcy9fdXRpbGl0aWVzLmNsZWFyZml4LnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy91dGlsaXRpZXMvX3V0aWxpdGllcy5oaWRlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy91dGlsaXRpZXMvX3V0aWxpdGllcy50eXBlLnNjc3MiLCJyZXNvdXJjZXMvYXNzZXRzL3N0eWxlcy91dGlsaXRpZXMvX3V0aWxpdGllcy53cmFwcGVyLnNjc3MiLCJub2RlX21vZHVsZXMvYmFndWV0dGVib3guanMvZGlzdC9iYWd1ZXR0ZUJveC5taW4uY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBMIEUgQSBQXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vLyBUT09MU1xuQGltcG9ydCBcInRvb2xzL190b29scy5hbmltYXRpb24uc2Nzc1wiOyBAaW1wb3J0IFwidG9vbHMvX3Rvb2xzLmNsZWFyZml4LnNjc3NcIjsgQGltcG9ydCBcInRvb2xzL190b29scy5mdW5jdGlvbnMuc2Nzc1wiOyBAaW1wb3J0IFwidG9vbHMvX3Rvb2xzLmhpZGUuc2Nzc1wiOyBAaW1wb3J0IFwidG9vbHMvX3Rvb2xzLnBhbGV0dGUuc2Nzc1wiOyBAaW1wb3J0IFwidG9vbHMvX3Rvb2xzLnN5bWJvbHMuc2Nzc1wiO1xuXG4vLyBTRVRUSU5HU1xuQGltcG9ydCBcInNldHRpbmdzL3NldHRpbmdzLmNvbmZpZ1wiO1xuQGltcG9ydCBcInNldHRpbmdzL3NldHRpbmdzLmNvbnN0YW50c1wiO1xuQGltcG9ydCBcInNldHRpbmdzL3NldHRpbmdzLmdsb2JhbFwiO1xuXG4vLyBOUE0gREVQRU5ERU5DSUVTXG5AaW1wb3J0IFwifmJyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50XCI7XG5AaW1wb3J0IFwifmJyZWFrcG9pbnQtc2xpY2VyL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQtc2xpY2VyXCI7XG5AaW1wb3J0IFwifnN3aXBlci9kaXN0L2Nzcy9zd2lwZXIubWluXCI7XG5AaW1wb3J0IFwifnNsaW0tc2VsZWN0L2Rpc3Qvc2xpbXNlbGVjdC5taW5cIjtcblxuLy8gR0VORVJJQ1xuQGltcG9ydCBcIn5ub3JtYWxpemUuY3NzL25vcm1hbGl6ZVwiO1xuQGltcG9ydCBcImdlbmVyaWMvZ2VuZXJpYy5yZXNldFwiO1xuQGltcG9ydCBcImdlbmVyaWMvZ2VuZXJpYy5zaGFyZWRcIjtcbkBpbXBvcnQgXCJnZW5lcmljL2dlbmVyaWMucHJpbnRcIjtcblxuLy8gT0JKRUNUU1xuQGltcG9ydCBcIm9iamVjdHMvX29iamVjdHMuYmxvY2suc2Nzc1wiOyBAaW1wb3J0IFwib2JqZWN0cy9fb2JqZWN0cy5ib3guc2Nzc1wiOyBAaW1wb3J0IFwib2JqZWN0cy9fb2JqZWN0cy5idXR0b24uc2Nzc1wiOyBAaW1wb3J0IFwib2JqZWN0cy9fb2JqZWN0cy5mb3JtLnNjc3NcIjsgQGltcG9ydCBcIm9iamVjdHMvX29iamVjdHMubGlzdC5zY3NzXCI7IEBpbXBvcnQgXCJvYmplY3RzL19vYmplY3RzLm1lZGlhLnNjc3NcIjsgQGltcG9ydCBcIm9iamVjdHMvX29iamVjdHMub3ZlcmxheS5zY3NzXCI7IEBpbXBvcnQgXCJvYmplY3RzL19vYmplY3RzLnRyaWFuZ2xlLnNjc3NcIjsgQGltcG9ydCBcIm9iamVjdHMvX29iamVjdHMudHlwZS5zY3NzXCI7IEBpbXBvcnQgXCJvYmplY3RzL19vYmplY3RzLndyYXBwZXIuc2Nzc1wiO1xuXG4vLyBFTEVNRU5UU1xuQGltcG9ydCBcImVsZW1lbnRzL19lbGVtZW50cy5ibG9ja3F1b3RlLnNjc3NcIjsgQGltcG9ydCBcImVsZW1lbnRzL19lbGVtZW50cy5mb3JtLnNjc3NcIjsgQGltcG9ydCBcImVsZW1lbnRzL19lbGVtZW50cy5pbWFnZXMuc2Nzc1wiOyBAaW1wb3J0IFwiZWxlbWVudHMvX2VsZW1lbnRzLnBhZ2Uuc2Nzc1wiOyBAaW1wb3J0IFwiZWxlbWVudHMvX2VsZW1lbnRzLnRhYmxlcy5zY3NzXCI7IEBpbXBvcnQgXCJlbGVtZW50cy9fZWxlbWVudHMudHlwZS5zY3NzXCI7XG5cbi8vIENPTVBPTkVOVFNcbkBpbXBvcnQgXCJjb21wb25lbnRzL19jb21wb25lbnRzLmFjY29yZGlvbi5zY3NzXCI7IEBpbXBvcnQgXCJjb21wb25lbnRzL19jb21wb25lbnRzLmFyY2hpdmUuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5iYWNrZ3JvdW5kLWltYWdlLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuYmFubmVyLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuYnV0dG9uLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuY29sdW1ucy5zY3NzXCI7IEBpbXBvcnQgXCJjb21wb25lbnRzL19jb21wb25lbnRzLmNvbXBhbnkuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5jb21wb25lbnQuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5jb250YWN0LnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuZmVhdHVyZWQtYmFyLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuZmVhdHVyZWQtYmxvY2tzLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuZmlsdGVyLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuZmx5b3V0LnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuZm9vdGVyLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuZm9ybS5zY3NzXCI7IEBpbXBvcnQgXCJjb21wb25lbnRzL19jb21wb25lbnRzLmdhbGxlcnkuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5oYW1idXJnZXIuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5oZWFkZXIuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5oZXJvLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuaW1hZ2Uuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5saXN0LnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMubWFwLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMubWVkaWEuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5tZXRhLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMubmF2LnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMucGFnZS5zY3NzXCI7IEBpbXBvcnQgXCJjb21wb25lbnRzL19jb21wb25lbnRzLnBhZ2luYXRpb24uc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy5wb3N0LnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuc2xpZGVyLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMuc29jaWFsLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMudGFibGUuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy50ZWFtLnNjc3NcIjsgQGltcG9ydCBcImNvbXBvbmVudHMvX2NvbXBvbmVudHMudGV4dC1hbmQtaW1hZ2Uuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy50aWxlcy5zY3NzXCI7IEBpbXBvcnQgXCJjb21wb25lbnRzL19jb21wb25lbnRzLnR5cGUuc2Nzc1wiOyBAaW1wb3J0IFwiY29tcG9uZW50cy9fY29tcG9uZW50cy52aWRlby5zY3NzXCI7IEBpbXBvcnQgXCJjb21wb25lbnRzL193cC1jbGFzc2VzLnNjc3NcIjtcblxuLy8gVVRJTElUSUVTXG5AaW1wb3J0IFwidXRpbGl0aWVzL191dGlsaXRpZXMuYm94LnNjc3NcIjsgQGltcG9ydCBcInV0aWxpdGllcy9fdXRpbGl0aWVzLmNsZWFyZml4LnNjc3NcIjsgQGltcG9ydCBcInV0aWxpdGllcy9fdXRpbGl0aWVzLmhpZGUuc2Nzc1wiOyBAaW1wb3J0IFwidXRpbGl0aWVzL191dGlsaXRpZXMudHlwZS5zY3NzXCI7IEBpbXBvcnQgXCJ1dGlsaXRpZXMvX3V0aWxpdGllcy53cmFwcGVyLnNjc3NcIjtcbi8vIEBpbXBvcnQgXCJ+aW51aXRjc3MvdXRpbGl0aWVzL3V0aWxpdGllcy53aWR0aHNcIjtcbi8vIEBpbXBvcnQgXCJ+aW51aXRjc3MvdXRpbGl0aWVzL3V0aWxpdGllcy5zcGFjaW5nc1wiO1xuLy8gQGltcG9ydCBcIn5pbnVpdGNzcy91dGlsaXRpZXMvdXRpbGl0aWVzLnJlc3BvbnNpdmUtc3BhY2luZ3NcIjtcblxuQGltcG9ydCBcIn5iYWd1ZXR0ZWJveC5qcy9kaXN0L2JhZ3VldHRlQm94Lm1pblwiO1xuIiwiLy8gQW5pbWF0ZSBpbiBmcm9tIHRoZSByaWdodFxuQGtleWZyYW1lcyBpbkZyb21SaWdodCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuLy8gQW5pbWF0ZSBvdXQgdG8gdGhlIHJpZ2h0XG5Aa2V5ZnJhbWVzIG91dFRvUmlnaHQge1xuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG5cbi8vIEFuaW1hdGUgaW4gZnJvbSB0aGUgbGVmdFxuQGtleWZyYW1lcyBpbkZyb21MZWZ0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuLy8gQW5pbWF0ZSBvdXQgdG8gdGhlIGxlZnRcbkBrZXlmcmFtZXMgb3V0VG9MZWZ0IHtcbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuLmlzLW1hZ2ljIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwcHgpO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDFzO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSk7XG4gIG9wYWNpdHk6IDAgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG5cbiAgJi5pcy1sb2FkZWQge1xuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA0OCB7XG4gIC5pcy1tYWdpYy5kZWxheS0tI3skaX0ge1xuICAgICYuaXMtbG9hZGVkIHtcbiAgICAgIHRyYW5zaXRpb24tZGVsYXk6ICgjeyRpICogMC4zfXMpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gY2xlYXJmaXgoKSB7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG4iLCJAZnVuY3Rpb24ga2lsbC12YXJpYW50KCRzZWxlY3Rvcikge1xuICAkaW5kZXg6IHN0ci1pbmRleCgjeyRzZWxlY3Rvcn0sICctLScpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgIEByZXR1cm4gc3RyLXNsaWNlKCN7JHNlbGVjdG9yfSwgMSwgJGluZGV4IC0gMSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJHNlbGVjdG9yO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzcGFjaW5nKCRtdWx0aXBsZTogMSkge1xuICAkc3BhY2VyczogKCk7XG4gICRjb3VudDogbGVuZ3RoKCRtdWx0aXBsZSk7XG5cbiAgQGlmICRjb3VudCA9PSAxIHtcbiAgICBAcmV0dXJuICRncmlkLS1iYXNlbGluZSAqICRtdWx0aXBsZTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkc3BhY2VyczogYXBwZW5kKCRzcGFjZXJzLCAkZ3JpZC0tYmFzZWxpbmUgKiBudGgoJG11bHRpcGxlLCAkaSkpO1xuICB9XG5cbiAgQHJldHVybiAkc3BhY2Vycztcbn1cblxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiBlYWNoIGRpcmVjdGlvbiBpbiBhIGxpc3Rcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAcGFyYW0ge0xpc3R9ICRkaXJlY3Rpb25zIC0gTGlzdCBvZiBpbml0aWFsIGRpcmVjdGlvbnNcbi8vLyBAcmV0dXJuIHtMaXN0fSAtIExpc3Qgb2Ygb3Bwb3NpdGUgZGlyZWN0aW9uc1xuQGZ1bmN0aW9uIG9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9ucykge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uczogKCk7XG4gICRkaXJlY3Rpb24tbWFwOiAoXG4gICAgJ3RvcCc6ICAgICdib3R0b20nLFxuICAgICdyaWdodCc6ICAnbGVmdCcsXG4gICAgJ2JvdHRvbSc6ICd0b3AnLFxuICAgICdsZWZ0JzogICAncmlnaHQnLFxuICAgICdjZW50ZXInOiAnY2VudGVyJyxcbiAgICAnbHRyJzogICAgJ3J0bCcsXG4gICAgJ3J0bCc6ICAgICdsdHInXG4gICk7XG5cbiAgQGVhY2ggJGRpcmVjdGlvbiBpbiAkZGlyZWN0aW9ucyB7XG4gICAgJGRpcmVjdGlvbjogdG8tbG93ZXItY2FzZSgkZGlyZWN0aW9uKTtcblxuICAgIEBpZiBtYXAtaGFzLWtleSgkZGlyZWN0aW9uLW1hcCwgJGRpcmVjdGlvbikge1xuICAgICAgJG9wcG9zaXRlLWRpcmVjdGlvbnM6IGFwcGVuZCgkb3Bwb3NpdGUtZGlyZWN0aW9ucywgdW5xdW90ZShtYXAtZ2V0KCRkaXJlY3Rpb24tbWFwLCAkZGlyZWN0aW9uKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJObyBvcHBvc2l0ZSBkaXJlY3Rpb24gY2FuIGJlIGZvdW5kIGZvciBgI3skZGlyZWN0aW9ufWAuIERpcmVjdGlvbiBvbWl0dGVkLlwiO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG9wcG9zaXRlLWRpcmVjdGlvbnM7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0hJREVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogSGlkZSBvbmx5IHZpc3VhbGx5LCBidXQgaGF2ZSBpdCBhdmFpbGFibGUgZm9yIHNjcmVlbiByZWFkZXJzOlxuICogaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eVxuICovXG5cbkBtaXhpbiBoaWRkZW4tdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG4gIGNsaXAtcGF0aDogaW5zZXQoNTAlKSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxcHggIWltcG9ydGFudDtcbn1cblxuQG1peGluIGhpZGUtdGV4dCgpIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtaW5kZW50OiAxMDElO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiLy8gQ29tcGxlbWVudGFyeSBjb2xvdXJzXG5AZnVuY3Rpb24gY29tcGxlbWVudGFyeSgkY29sb3IpIHtcbiAgQHJldHVybiBhZGp1c3RfaHVlKCRjb2xvciwgMTgwKTtcbn1cblxuQGZ1bmN0aW9uIHNlY29uZGFyeSgkY29sb3IpIHtcbiAgQHJldHVybiBhZGp1c3RfaHVlKCRjb2xvciwgMTIwKTtcbn1cblxuQGZ1bmN0aW9uIHRlcnRpYXJ5KCRjb2xvcikge1xuICBAcmV0dXJuIGFkanVzdF9odWUoJGNvbG9yLCAtMTIwKTtcbn1cblxuLy8gRnVuY3Rpb24gdG8gZ3JhYiBjb2xvdXIgZnJvbSBwYWxldHRlXG5AZnVuY3Rpb24gcGFsZXR0ZSgkcGFsZXR0ZSwgJHRvbmU6ICdiYXNlJykge1xuICAkcmV0dXJuLWNvbG9yOiBtYXAtZ2V0KCRwYWxldHRlcywgJHBhbGV0dGUpO1xuXG4gIEBpZiB0eXBlLW9mKG1hcC1nZXQoJHBhbGV0dGVzLCAkcGFsZXR0ZSkpID09ICdtYXAnIHtcbiAgICAkcmV0dXJuLWNvbG9yOiBtYXAtZ2V0KG1hcC1nZXQoJHBhbGV0dGVzLCAkcGFsZXR0ZSksICR0b25lKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybi1jb2xvcjtcbn1cbiIsIkBtaXhpbiBjaGV2cm9uKCRkaXJlY3Rpb246IHJpZ2h0LCAkaG92ZXI6IHRydWUpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMDYyNWVtO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAgIDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGE0YTRhO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC40cyBlYXNlO1xuICAgIGhlaWdodDogMC4xMjVlbTtcbiAgICB3aWR0aDogIDAuNWVtO1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBib3R0b206IDUwJTtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0wLjFlbSkgcm90YXRlKDQ1ZGVnKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0wLjFlbSkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHRvcDogNTAlO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMC4xZW0pIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMC4xZW0pIHJvdGF0ZSg0NWRlZyk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRob3ZlciA9PSB0cnVlIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgICY6OmJlZm9yZSxcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLS1saW5rO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vICAgI0NPTkZJR1xuLy8gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLy8gQSBtYXAgb2YgZ2xvYmFsIGNvbmZpZyBzZXR0aW5ncy4gRGVmaW5lIGFueSBwcm9qZWN0LWxldmVsIGNvbmZpZ3VyYXRpb24sXG4vLyBmZWF0dXJlIHN3aXRjaGVzLCBldGMuIGluIGhlcmUuXG5cbiRpbnVpdC1jb25maWc6IChcbiAgZW52OiBkZXYsXG4gIGhlYWx0aGNoZWNrOiBmYWxzZSxcbiAgZGVidWc6IHRydWUsXG4pO1xuXG4vLyBZb3UgY2FuIGFjY2VzcyBkYXRhIGluIHRoaXMgbWFwIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246XG4vL1xuLy8gaW51aXQtY29uZmlnKDxrZXk+KVxuLy9cbi8vIEV4YW1wbGUgdXNhZ2U6XG4vL1xuLy8gQGlmIChpbnVpdC1jb25maWcoZGVidWcpID09IHRydWUpIHsgLi4uICB9XG5cbkBmdW5jdGlvbiBpbnVpdC1jb25maWcoJGtleSkge1xuICBAcmV0dXJuIG1hcC1nZXQoJGludWl0LWNvbmZpZywgJGtleSk7XG59XG4iLCIvLy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gICAjQ09OU1RBTlRTXG4vLyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vLyBUaGUgY29uc3RhbnRzIHNldHRpbmdzIGZpbGUgY29udGFpbnMgdW5jaGFuZ2luZyB2YXJpYWJsZXM7IHRoaW5ncyB0aGF0XG4vLyB3aWxsIHN0YXkgY29uc2lzdGVudCBhY3Jvc3MgbW9zdCBwcm9qZWN0cy5cblxuLyoqXG4gKiBTcGFjaW5nXG4gKi9cblxuJGdyaWQtLWJhc2VsaW5lOiAwLjVyZW07IC8vIDhcblxuJHNwYWNpbmctdW5pdC0tMTogICRncmlkLS1iYXNlbGluZSAqIDE7ICAvLyA4XG4kc3BhY2luZy11bml0LS0yOiAgJGdyaWQtLWJhc2VsaW5lICogMjsgIC8vIDE2XG4kc3BhY2luZy11bml0LS0zOiAgJGdyaWQtLWJhc2VsaW5lICogMzsgIC8vIDI0XG4kc3BhY2luZy11bml0LS00OiAgJGdyaWQtLWJhc2VsaW5lICogNDsgIC8vIDMyXG4kc3BhY2luZy11bml0LS01OiAgJGdyaWQtLWJhc2VsaW5lICogNTsgIC8vIDQwXG4kc3BhY2luZy11bml0LS04OiAgJGdyaWQtLWJhc2VsaW5lICogODsgIC8vIDY0XG4kc3BhY2luZy11bml0LS0xMjogJGdyaWQtLWJhc2VsaW5lICogMTI7IC8vIDk2XG4kc3BhY2luZy11bml0OiAkc3BhY2luZy11bml0LS00O1xuXG5cbi8qKlxuICogVHlwb2dyYXBoeVxuICovXG5cbi8vIFdlaWdodHNcbiRmb250LXdlaWdodC0tdGhpbjogICAgICAgMTAwO1xuJGZvbnQtd2VpZ2h0LS1saWdodDogICAgICAzMDA7XG4kZm9udC13ZWlnaHQtLXJlZ3VsYXI6ICAgIDQwMDtcbiRmb250LXdlaWdodC0tbWVkaXVtOiAgICAgNTAwO1xuJGZvbnQtd2VpZ2h0LS1zZW1pLWJvbGQ6ICA2MDA7XG4kZm9udC13ZWlnaHQtLWJvbGQ6ICAgICAgIDcwMDtcbiRmb250LXdlaWdodC0tZXh0cmEtYm9sZDogODAwO1xuJGZvbnQtd2VpZ2h0LS1ibGFjazogICAgICA5MDA7XG5cbi8vIExldHRlciBTcGFjaW5nXG4kbGV0dGVyLXNwYWNpbmctLWJhc2U6IG5vcm1hbDtcblxuJGxldHRlci1zcGFjaW5nLS1zbWFsbDogIDAuMDM3NXJlbTtcbiRsZXR0ZXItc3BhY2luZy0tbWVkaXVtOiAwLjA2MjVyZW07XG4kbGV0dGVyLXNwYWNpbmctLWxhcmdlOiAgMC4xMjVyZW07XG5cblxuLyoqXG4gKiBUcmFuc2l0aW9uc1xuICovXG5cbiR0cmFuc2l0aW9uLS1lYXNlLW91dC1zaW5lOiAgICBjdWJpYy1iZXppZXIoMC4zOSwgMC41NzUsIDAuNTY1LCAxKTtcbiR0cmFuc2l0aW9uLS1lYXNlLWluLW91dC1xdWFkOiBjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSk7XG4kdHJhbnNpdGlvbi0tZWFzZS1vdXQtYmFjazogICAgY3ViaWMtYmV6aWVyKDAuMDQsIDAuMjksIDAuMywgMS4zNSk7XG4kdHJhbnNpdGlvbi0tZWFzZS1vdXQtY3ViaWM6ICAgY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XG4kdHJhbnNpdGlvbjogJHRyYW5zaXRpb24tLWVhc2UtaW4tb3V0LXF1YWQ7XG5cblxuLyoqXG4gKiBCcmVha3BvaW50c1xuICovXG5cbiRzbGljZXItYnJlYWtwb2ludHM6ICAwICAgICAgICA2MDBweCAgICAgICA5MDBweCAgICAgICAxMjAwcHggICAgICAxODAwcHg7XG5cbi8vICAgICAgICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilKzilIDilIDilIDilIDilJgg4pSU4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSYIOKUlOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUmCDilJTilIDilIDilIDilIDilKzilIDilIDilIDilIDilJgg4pSU4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSYXG4vLyBTbGljZSBudW1iZXJzOiAgICAgICAgICAxICAgICAgICAgICAyICAgICAgICAgICAzICAgICAgICAgICA0ICAgICAgICAgICA1XG4kc2xpY2VyLWJyZWFrcG9pbnQtbmFtZXM6ICd4cycgICAgICAgICdzJyAgICAgICAgICdtJyAgICAgICAgICdsJyAgICAgICAgJ3hsJztcbiIsIi8vLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAgICNHTE9CQUxcbi8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8vIFRoZSBnbG9iYWwgc2V0dGluZ3MgZmlsZSBjb250YWlucyBhbnkgcHJvamVjdC13aWRlIHZhcmlhYmxlczsgdGhpbmdzIHRoYXRcbi8vIG5lZWQgdG8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGVudGlyZSBjb2RlYmFzZS5cblxuLyoqXG4gKiBQYWxldHRlXG4gKi9cblxuLy8gQmFzZVxuJF9jb2xvci0tYnJhbmQ6ICMzZmQ4YjY7XG4kX2NvbG9yLS1ncmV5OiAgIzRhNGE0YTtcblxuLy8gUGFsZXR0ZVxuJHBhbGV0dGVzOiAoXG4gIHdoaXRlOiAoXG4gICAgYmFzZTogI2ZmZixcbiAgICBkYXJrOiAjZjlmOWZhXG4gICksXG4gIGJsYWNrOiAoXG4gICAgYmFzZTogIzAwMFxuICApLFxuICBncmV5OiAoXG4gICAgYmFzZTogICAgICAgICAgICAkX2NvbG9yLS1ncmV5LFxuICAgIGxpZ2h0OiAgIGxpZ2h0ZW4oJF9jb2xvci0tZ3JleSwgMzAlKSxcbiAgICBsaWdodGVyOiAjZTZlNmU2LFxuICAgIGRhcms6ICAgICBkYXJrZW4oJF9jb2xvci0tZ3JleSwgMTAlKSxcbiAgICBkYXJrZXI6ICAjMTgxZDI1XG4gICksXG4gIGJyYW5kOiAoXG4gICAgYmFzZTogICAgICAgICAgICAgICAgJF9jb2xvci0tYnJhbmQsXG4gICAgZGFyazogICAgICAgICBkYXJrZW4oJF9jb2xvci0tYnJhbmQsIDEwJSksXG4gICAgc2Vjb25kYXJ5OiBzZWNvbmRhcnkoJF9jb2xvci0tYnJhbmQpLFxuICAgIHRlcnRpYXJ5OiAgIHRlcnRpYXJ5KCRfY29sb3ItLWJyYW5kKVxuICApXG4pO1xuXG5cbi8qKlxuICogQ29sb3Vyc1xuICovXG5cbi8vIFR5cG9ncmFwaHlcbiRjb2xvci0tdGV4dDogICBwYWxldHRlKGdyZXksIGRhcmtlcik7XG4kY29sb3ItLWhvdmVyOiAgcGFsZXR0ZShicmFuZCwgYWNjZW50KTtcbiRjb2xvci0tYm9yZGVyOiBwYWxldHRlKGdyZXksIGxpZ2h0KTtcbiRjb2xvci0tbGluazogICBwYWxldHRlKGJyYW5kKTtcblxuLy8gU3RhdGVzXG4kY29sb3ItLXN1Y2Nlc3M6ICM1NmJkNWI7XG4kY29sb3ItLWVycm9yOiAgICNlMTQ2NGU7XG5cblxuLyoqXG4gKiBUeXBvZ3JhcGh5XG4gKi9cblxuLy8gV2VpZ2h0c1xuJGZvbnQtd2VpZ2h0LS1ib2R5OiAkZm9udC13ZWlnaHQtLXJlZ3VsYXI7XG5cbi8vIEZhbWlsaWVzXG4kX2ZvbnQtZmFtaWx5LS1wcm94aW1hLW5vdmE6ICdwcm94aW1hIG5vdmEnLCAnaGVsdmV0aWNhIG5ldWUnLCBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmO1xuXG4kZm9udC1mYW1pbHktLWJvZHk6ICAgICRfZm9udC1mYW1pbHktLXByb3hpbWEtbm92YTtcbiRmb250LWZhbWlseS0taGVhZGluZzogJF9mb250LWZhbWlseS0tcHJveGltYS1ub3ZhO1xuJGZvbnQtZmFtaWx5LS1zcGVjaWFsOiAkZm9udC1mYW1pbHktLWhlYWRpbmc7XG5cbiRsaW5lLWhlaWdodC0tYmFzZTogMS43NTtcblxuXG4vKipcbiAqIFdpZHRoc1xuICovXG4kbWF4LXdpZHRoLS14bmFycm93OiAzMHJlbTsgLy8gNjQwXG4kbWF4LXdpZHRoLS1uYXJyb3c6IDQwcmVtOyAvLyA2NDBcbiRtYXgtd2lkdGg6ICAgICAgICAgNjByZW07IC8vIDk2MFxuJG1heC13aWR0aC0td2lkZTogICA3MHJlbTsgLy8gMTEyMFxuJG1heC13aWR0aC0teHdpZGU6ICA4MHJlbTsgLy8gMTQ0MFxuXG4vKiBIZWlnaHRzICovXG4kaGVhZGVyLWhlaWdodDogN3JlbTtcbiRoZWFkZXItaGVpZ2h0LS1tb2JpbGU6IDRyZW07XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIi8vIERlZmF1bHQgdmFsdWVzXG5AaW1wb3J0IFwiYnJlYWtwb2ludC1zbGljZXIvdmFyaWFibGVzXCI7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnNcbkBpbXBvcnQgXCJicmVha3BvaW50LXNsaWNlci9oZWxwZXItZnVuY3Rpb25zXCI7XG5cbi8vIFRoZSBtYWdpYyFcbkBpbXBvcnQgXCJicmVha3BvaW50LXNsaWNlci9taXhpbnNcIjtcbiIsIi8vIFRoZSBkZWZhdWx0c1xuJHNsaWNlci1icmVha3BvaW50czogMCA0MDBweCA2MDBweCA4MDBweCAxMDEwcHggIWRlZmF1bHQ7XG4kc2xpY2VyLWJyZWFrcG9pbnQtbmFtZXM6ICgpICFkZWZhdWx0O1xuJHNsaWNlci1hbnRpLW92ZXJsYXAtY29ycmVjdGlvbnM6IDFweCAhZGVmYXVsdDtcbiIsIi8vIFJldHVybnMgYSBjb3JyZWN0aW9uIHZhbHVlIGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludFxuLy8gdG8gcHJldmVudCBtZWRpYSBxdWVyeSBvdmVybGFwcGluZy5cbi8vXG4vLyBSZWxpZXMgb24gdGhlIGdsb2JhbCB2YXJpYWJsZSAkc2xpY2VyLWFudGktb3ZlcmxhcC1jb3JyZWN0aW9uc1xuLy8gdGhhdCBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgYWxsb3dlZCBjb3JyZWN0aW9uIHZhbHVlcy5cbi8vXG4vLyBSZXR1cm5zIGVpdGhlciBvbmx5IHBvc2l0aXZlIG9yIG9ubHkgbmVnYXRpdmUgdmFsdWUuXG4vL1xuLy8gYW50aS1vdmVybGFwLWNvcnJlY3Rpb24oJGJwLCAkcG9zaXRpdmU6IHRydWUpXG4vLyAgIC0gJGJwICAgICAgIDogYSBicmVha3BvaW50LCBlLiBnLiA4MDBweCBvciAyMGVtXG4vLyAgIC0gJHBvc2l0aXZlIDogd2hldGhlciB0byByZXR1cm4gb25seSBwb3NpdGl2ZSBvciBvbmx5IG5lZ2F0aXZlIHZhbHVlc1xuLy8gICAgICAgICAgICAgICAgICogdHJ1ZSAtIHJldHVybiBvbmx5IHBvc2l0aXZlIGNvcnJlY3Rpb24gdmFsdWUgKGRlZmF1bHQpXG4vLyAgICAgICAgICAgICAgICAgKiBmYWxzZSAtIHJldHVybiBvbmx5IG5lZ2F0aXZlIGNvcnJlY3Rpb24gdmFsdWVcbkBmdW5jdGlvbiBhbnRpLW92ZXJsYXAtY29ycmVjdGlvbigkYnAsICRwb3NpdGl2ZTogdHJ1ZSkge1xuICBAZWFjaCAkY29ycmVjdGlvbiBpbiAkc2xpY2VyLWFudGktb3ZlcmxhcC1jb3JyZWN0aW9ucyB7XG4gICAgQGlmICh1bml0KCRicCkgPT0gdW5pdCgkY29ycmVjdGlvbikpIGFuZCAoKCRjb3JyZWN0aW9uID4gMCkgPT0gJHBvc2l0aXZlKSB7XG4gICAgICBAcmV0dXJuICRjb3JyZWN0aW9uOyB9IH1cbiAgQHJldHVybiAwOyB9XG5cblxuLy8gdG90YWwtc2xpY2VzKClcbi8vXG4vLyBBY2NlcHRzIG5vIGFyZ3VtZW50cy5cbi8vXG4vLyBSZXR1cm5zIHRvdGFsIG51bWJlciBvZiBzbGljZXNcbi8vICh3aGljaCBpcyBlcXVhbCB0byB0b3RhbCBudW1iZXIgb2YgYnJlYWtwb2ludHMpLlxuQGZ1bmN0aW9uIHRvdGFsLXNsaWNlcygpIHtcbiAgQHJldHVybiBsZW5ndGgoJHNsaWNlci1icmVha3BvaW50cyk7IH1cblxuXG4vLyBsZWZ0LWJwLW9mLXNsaWNlKCRzbGljZSlcbi8vIC0gJHNsaWNlIDogPHNsaWNlIG51bWJlcj4gQSBudW1iZXIgb2YgYSBzbGljZS4gU2hvdWxkIGJlIHBvc2l0aXZlIGludGVnZXIuXG4vL1xuLy8gUmV0dXJucyB0aGUgbGVmdCBicmVha3BvaW50IG9mIGFuIE50aCBzbGljZSwgZS4gZy4gYDYwMHB4YC5cbkBmdW5jdGlvbiBsZWZ0LWJwLW9mLXNsaWNlKCRzbGljZSkge1xuICAkc2xpY2U6IGdldC1zbGljZS1pZCgkc2xpY2UpO1xuICAkbWluOiAxO1xuICAkbWF4OiB0b3RhbC1zbGljZXMoKTtcblxuICAvLyBNYWtpbmcgc3VyZSB0aGF0IHRoZSBzbGljZSBwcm92aWRlZCBpcyB2YWxpZFxuICBAaWYgKCRzbGljZSA8ICRtaW4pIG9yICgkc2xpY2UgPiAkbWF4KSB7XG5cbiAgICBAd2FybiBcIldyb25nIFNsaWNlIG51bWJlciBwcm92aWRlZDogI3skc2xpY2V9LiBTaG91bGQgYmUgYmV0d2VlbiAjeyRtaW59IGFuZCAjeyRtYXh9LlwiOyB9XG5cbiAgQGVsc2Uge1xuXG4gICAgJGxlZnQ6IGkgYW0gZGVjbGFyZWQ7XG5cbiAgICAvLyBTcGVjaWFsIHRyZWF0bWVudCBvZiB0aGUgZmlyc3Qgc2xpY2UuLi5cbiAgICBAaWYgJHNsaWNlID09IDEge1xuICAgICAgLy8gLi4udG8gcHJldmVudCBhIG1lYW5pbmdsZXNzIGBtaW4td2lkdGg6IDBgIG1laWRhIHF1ZXJ5XG4gICAgICAkbGVmdDogIG1heC13aWR0aDsgfSAvLyBUaGlzIGlzIEJyZWFrcG9pbnQncyBzeW50YXhcblxuICAgIEBlbHNlIHtcbiAgICAgIC8vIFJldHVybmluZyB0aGUgbGVmdCBlZGdlIG9mIHRoZSBzbGljZVxuICAgICAgJGxlZnQ6ICBudGgoJHNsaWNlci1icmVha3BvaW50cywgJHNsaWNlKTtcbiAgICAgICRsZWZ0OiAgJGxlZnQgKyBhbnRpLW92ZXJsYXAtY29ycmVjdGlvbigkbGVmdCwgdHJ1ZSk7IH1cblxuICAgIEByZXR1cm4gJGxlZnQ7IH0gfVxuXG5cbi8vIHJpZ2h0LWJwLW9mLXNsaWNlKCRzbGljZSlcbi8vIC0gJHNsaWNlIDogPHNsaWNlIG51bWJlcj4gQSBudW1iZXIgb2YgYSBzbGljZS4gU2hvdWxkIGJlIHBvc2l0aXZlIGludGVnZXIuXG4vL1xuLy8gUmV0dXJucyB0aGUgcmlnaHQgYnJlYWtwb2ludCBvZiBhbiBOdGggc2xpY2UsIGUuIGcuIGA4MDBweGAuXG5AZnVuY3Rpb24gcmlnaHQtYnAtb2Ytc2xpY2UoJHNsaWNlKSB7XG4gICRzbGljZTogZ2V0LXNsaWNlLWlkKCRzbGljZSk7XG4gICRtaW46IDE7XG4gICRtYXg6IHRvdGFsLXNsaWNlcygpIC0gMTtcblxuICAvLyBNYWtpbmcgc3VyZSB0aGF0IHRoZSBzbGljZSBwcm92aWRlZCBpcyB2YWxpZFxuICBAaWYgJG1heCA9PSB0b3RhbC1zbGljZXMoKSB7XG4gICAgQHdhcm4gXCJTbGljZSBudW1iZXIgcHJvdmlkZWQ6ICN7JHNsaWNlfS4gSXQncyB0aGUgbGFzdCBzbGljZSwgaXQgaGFzIG5vIHJpZ2h0IGVkZ2UuXCI7IH1cbiAgQGVsc2UgaWYgKCRzbGljZSA8ICRtaW4pIG9yICgkc2xpY2UgPiAkbWF4KSB7XG4gICAgQHdhcm4gXCJXcm9uZyBjb2x1bW4gbnVtYmVyIHByb3ZpZGVkOiAjeyRzbGljZX0uIFNob3VsZCBiZSBiZXR3ZWVuICN7JG1pbn0gYW5kICN7JG1heH0uXCI7IH1cbiAgQGVsc2Uge1xuICAgIC8vIFJlYWRpbmcgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIHNsaWNlXG4gICAgJHJpZ2h0LWJwOiBudGgoJHNsaWNlci1icmVha3BvaW50cywgJHNsaWNlICsgMSk7XG4gICAgQHJldHVybiAkcmlnaHQtYnAgKyBhbnRpLW92ZXJsYXAtY29ycmVjdGlvbigkcmlnaHQtYnAsIGZhbHNlKTsgfSB9XG5cblxuLy8gYnAoJHNsaWNlKVxuLy9cbi8vIEEgc2hvcnRjdXQgZm9yIG50aCgkc2xpY2VyLWJyZWFrcG9pbnRzLCAkc2xpY2UpXG5AZnVuY3Rpb24gYnAoJHNsaWNlKSB7XG4gIEByZXR1cm4gbnRoKCRzbGljZXItYnJlYWtwb2ludHMsICRzbGljZSk7IH1cblxuXG4vLyBsYnAoJHNsaWNlKVxuLy9cbi8vIEEgc2hvcnRjdXQgZm9yIGxlZnQtYnAtb2Ytc2xpY2UoJHNsaWNlKVxuQGZ1bmN0aW9uIGxicCgkc2xpY2UpIHtcbiAgQHJldHVybiBsZWZ0LWJwLW9mLXNsaWNlKCRzbGljZSk7IH1cblxuXG4vLyByYnAoJHNsaWNlKVxuLy9cbi8vIEEgc2hvcnRjdXQgZm9yIHJpZ2h0LWJwLW9mLXNsaWNlKCRzbGljZSlcbkBmdW5jdGlvbiByYnAoJHNsaWNlKSB7XG4gIEByZXR1cm4gcmlnaHQtYnAtb2Ytc2xpY2UoJHNsaWNlKTsgfVxuXG5cbi8vIGdldC1zbGljZS1pZCgkc2xpY2UtaWQtb3ItbmFtZSlcbi8vXG4vLyBSZXR1cm5zIGEgc2xpY2UgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gYSBzbGljZSBuYW1lXG4vL1xuLy8gLSAkc2xpY2UtaWQtb3ItbmFtZTogPHNsaWNlIG51bWJlciBvciBuYW1lPiBTaG91bGQgYmUgZWl0aGVyIGEgbnVtYmVyIG9mIGEgc2xpY2UgKHBvc2l0aXZlIGludGVnZXIpXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGEgbmFtZSBvZiB0aGUgc2xpY2UgZnJvbSAkc2xpY2VyLWJyZWFrcG9pbnQtbmFtZXMgKHN0cmluZylcbkBmdW5jdGlvbiBnZXQtc2xpY2UtaWQoJHNsaWNlLWlkLW9yLW5hbWUpIHtcblxuICAvLyBUcmVhdGluZyB0aGUgYXJndW1lbnQgYXMgYSBzbGljZSBuYW1lLlxuICAvLyBSZXRyaWV2aW5nIHNsaWNlIGlkIGZvciBnaXZlbiBzbGljZSBuYW1lXG4gICRzbGljZS1pZDogaW5kZXgoJHNsaWNlci1icmVha3BvaW50LW5hbWVzLCAkc2xpY2UtaWQtb3ItbmFtZSk7XG5cbiAgLy8gQ2hlY2tpbmcgd2hldGhlciBhIHNsaWNlIHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzXG4gIEBpZiAkc2xpY2UtaWQge1xuICAgIC8vQHdhcm4gXCJzbGljZS1pZCBpcyB0cnV0aGZ1bFwiXG5cbiAgICAvLyBSZXR1cm4gdGhlIGlkIGZvdW5kXG4gICAgQHJldHVybiAkc2xpY2UtaWQ7IH1cbiAgQGVsc2Uge1xuICAgIC8vQHdhcm4gXCJzbGljZS1pZCBpcyBmYWxzeVwiXG5cbiAgICAvLyBBc3N1bWUgYW4gaWQgd2FzIGdpdmVuIGluIHRoZSBmaXJzdCBwbGFjZVxuICAgIEByZXR1cm4gJHNsaWNlLWlkLW9yLW5hbWU7IH0gfVxuXG5cbi8vIHByZXYtc2xpY2UoJHNsaWNlLWlkLW9yLW5hbWUpXG4vL1xuLy8gUmV0dXJucyBwcmV2aW91cyBzbGljZSBpZCBmb3IgdGhlIGdpdmVuIHNsaWNlXG5AZnVuY3Rpb24gcHJldi1zbGljZSgkc2xpY2UtaWQtb3ItbmFtZSkge1xuXG4gICRzbGljZS1pZDogZ2V0LXNsaWNlLWlkKCRzbGljZS1pZC1vci1uYW1lKTtcblxuICBAaWYgJHNsaWNlLWlkID4gMSB7XG4gICAgJHNsaWNlLWlkOiAkc2xpY2UtaWQgLSAxOyB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlByZXZpb3VzIHNsaWNlIGZvciB0aGUgZmlyc3Qgc2xpY2UgcmVxdWVzdGVkXCI7IH1cblxuICBAcmV0dXJuICRzbGljZS1pZDsgfVxuXG5cbi8vIG5leHQtc2xpY2UoJHNsaWNlLWlkLW9yLW5hbWUpXG4vL1xuLy8gUmV0dXJucyBuZXh0IHNsaWNlIGlkIGZvciB0aGUgZ2l2ZW4gc2xpY2VcbkBmdW5jdGlvbiBuZXh0LXNsaWNlKCRzbGljZS1pZC1vci1uYW1lKSB7XG5cbiAgJHNsaWNlLWlkOiBnZXQtc2xpY2UtaWQoJHNsaWNlLWlkLW9yLW5hbWUpO1xuXG4gIEBpZiAkc2xpY2UtaWQgPCB0b3RhbC1zbGljZXMoKSB7XG4gICAgJHNsaWNlLWlkOiAkc2xpY2UtaWQgKyAxOyB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlByZXZpb3VzIHNsaWNlIGZvciB0aGUgZmlyc3Qgc2xpY2UgcmVxdWVzdGVkXCI7IH1cblxuICBAcmV0dXJuICRzbGljZS1pZDsgfVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJZiB5b3UgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gaGVyZSxcbi8vIHBsZWFzZSByZWFkIHRoZSBSRUFETUUgZmlyc3QuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8gV3JhcHMgdGhlIGNvbnRlbnQgYmxvY2sgcHJvdmlkZWQgd2l0aCBhIG1lZGlhIHF1ZXJ5XG4vLyB3aXRoIG1pbi13aWR0aCBlcXVhbCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsZWZ0IHNsaWNlXG4vLyBhbmQgbWF4LXdpZHRoIGVxdWFsIHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSByaWdodCBzbGljZVxuLy9cbi8vIGJldHdlZW4oJHNsaWNlLWxlZnQsICRzbGljZS1yaWdodCwgJG5vLXF1ZXJ5OiBmYWxzZSlcbi8vIC0gJHNsaWNlLWxlZnQgIDogPHNsaWNlIG51bWJlcj4gQSBudW1iZXIgb2YgdGhlIGxlZnQgc2xpY2UuIFNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXG4vLyAtICRzbGljZS1yaWdodCA6IDxzbGljZSBudW1iZXI+IEEgbnVtYmVyIG9mIHRoZSBsZWZ0IHNsaWNlLiBTaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLlxuLy8gLSAkbm8tcXVlcnkgICAgOiBbPC5jbGFzcz5dICAgICBBIGNsYXNzIHRvIHByb3ZpZGUgdGhlIG5vLXF1ZXJ5IGZhbGxiYWNrIChzZWUgQnJlYWtwb2ludCBkb2NzKS5cbkBtaXhpbiBiZXR3ZWVuKCRzbGljZS1sZWZ0LCAkc2xpY2UtcmlnaHQsICRuby1xdWVyeTogZmFsc2UpIHtcblxuICAvLyBQYXJzaW5nIHNsaWNlIG5hbWVzLlxuICAkc2xpY2UtbGVmdDogZ2V0LXNsaWNlLWlkKCRzbGljZS1sZWZ0KTtcbiAgJHNsaWNlLXJpZ2h0OiBnZXQtc2xpY2UtaWQoJHNsaWNlLXJpZ2h0KTtcblxuICAvLyBJZiB0aGUgc2xpY2VzIHByb3ZpZGVkIGFyZSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IG9uZSxcbiAgLy8gdGhlIGJyZWFrcG9pbnQgYmVjb21lcyBtZWFuaW5nbGVzc1xuICBAaWYgKCRzbGljZS1sZWZ0ID09IDEpIGFuZCAoJHNsaWNlLXJpZ2h0ID09IHRvdGFsLXNsaWNlcygpKSB7XG4gICAgLy9UaHVzLCBkb24ndCB3cmFwIHRoZSBjb2RlIGJsb2NrIHdpdGggYSBtZWRpYSBxdWVyeVxuICAgIEBjb250ZW50OyB9XG5cbiAgQGVsc2Uge1xuXG4gICAgLy8gUmV0cmlldmluZyB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsZWZ0IHNsaWNlXG4gICAgJGNvbnRleHQ6ICAgbGVmdC1icC1vZi1zbGljZSgkc2xpY2UtbGVmdCk7XG5cbiAgICAvLyBSZXRyaWV2aW5nIHRoZSByaWdodCBlZGdlIG9mIHRoZSBzbGljZVxuICAgIC8vIHVubGVzcyB0aGUgc2xpY2UgaXMgdGhlIGxhc3Qgb25lXG4gICAgQGlmICRzbGljZS1yaWdodCA8IHRvdGFsLXNsaWNlcygpIHtcbiAgICAgICRyaWdodDogICByaWdodC1icC1vZi1zbGljZSgkc2xpY2UtcmlnaHQpO1xuICAgICAgJGNvbnRleHQ6IGFwcGVuZCgkY29udGV4dCwgJHJpZ2h0KTsgfVxuXG4gICAgLy8gU2V0dGluZyB0aGUgYnJlYWtwb2ludFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGNvbnRleHQsICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7IH0gfSB9XG5cblxuLy8gV3JhcHMgdGhlIGNvbnRlbnQgYmxvY2sgcHJvdmlkZWQgd2l0aCBhIG1lZGlhIHF1ZXJ5XG4vLyB3aXRoIG1pbi13aWR0aCBhbmQgbWF4LXdpZHRoIGVxdWFsIHRvIHRoZSBlZGdlcyBvZiBhIHNsaWNlXG4vL1xuLy8gYXQoJHNsaWNlLCAkbm8tcXVlcnk6IGZhbHNlKVxuLy8gLSAkc2xpY2UgOiA8c2xpY2UgbnVtYmVyPiBBIG51bWJlciBvZiBhIHNsaWNlLiBTaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLlxuLy8gLSAkbm8tcXVlcnkgICAgOiBbPC5jbGFzcz5dICAgICBBIGNsYXNzIHRvIHByb3ZpZGUgdGhlIG5vLXF1ZXJ5IGZhbGxiYWNrIChzZWUgQnJlYWtwb2ludCBkb2NzKS5cbkBtaXhpbiBhdCgkc2xpY2UsICRuby1xdWVyeTogZmFsc2UpIHtcblxuICBAaW5jbHVkZSBiZXR3ZWVuKCRzbGljZSwgJHNsaWNlLCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDsgfSB9XG5cblxuLy8gV3JhcHMgdGhlIGNvbnRlbnQgYmxvY2sgcHJvdmlkZWQgd2l0aCBhIG1lZGlhIHF1ZXJ5XG4vLyB3aXRoIG1pbi13aWR0aCBlcXVhbCB0byB0aGUgcmlnaHQgZWRnZSBvZiBhIHNsaWNlXG4vL1xuLy8gZnJvbSgkc2xpY2UsICRuby1xdWVyeTogZmFsc2UpXG4vLyAtICRzbGljZSA6IDxzbGljZSBudW1iZXI+IEEgbnVtYmVyIG9mIGEgc2xpY2UuIFNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXG4vLyAtICRuby1xdWVyeSAgICA6IFs8LmNsYXNzPl0gICAgIEEgY2xhc3MgdG8gcHJvdmlkZSB0aGUgbm8tcXVlcnkgZmFsbGJhY2sgKHNlZSBCcmVha3BvaW50IGRvY3MpLlxuQG1peGluIGZyb20oJHNsaWNlLCAkbm8tcXVlcnk6IGZhbHNlKSB7XG5cbiAgQGluY2x1ZGUgYmV0d2Vlbigkc2xpY2UsIHRvdGFsLXNsaWNlcygpLCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDsgfSB9XG5cblxuLy8gV3JhcHMgdGhlIGNvbnRlbnQgYmxvY2sgcHJvdmlkZWQgd2l0aCBhIG1lZGlhIHF1ZXJ5XG4vLyB3aXRoIG1heC13aWR0aCBlcXVhbCB0byB0aGUgcmlnaHQgZWRnZSBvZiBhIHNsaWNlXG4vL1xuLy8gdG8oJHNsaWNlLCAkbm8tcXVlcnk6IGZhbHNlKVxuLy8gLSAkc2xpY2UgOiA8c2xpY2UgbnVtYmVyPiBBIG51bWJlciBvZiBhIHNsaWNlLiBTaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLlxuLy8gLSAkbm8tcXVlcnkgICAgOiBbPC5jbGFzcz5dICAgICBBIGNsYXNzIHRvIHByb3ZpZGUgdGhlIG5vLXF1ZXJ5IGZhbGxiYWNrIChzZWUgQnJlYWtwb2ludCBkb2NzKS5cbkBtaXhpbiB0bygkc2xpY2UsICRuby1xdWVyeTogZmFsc2UpIHtcblxuICBAaW5jbHVkZSBiZXR3ZWVuKDEsICRzbGljZSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7IH0gfVxuXG5cbiIsIi8qKlxuICogU3dpcGVyIDQuMS42XG4gKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9uc1xuICogaHR0cDovL3d3dy5pZGFuZ2Vyby51cy9zd2lwZXIvXG4gKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxOCBWbGFkaW1pciBLaGFybGFtcGlkaVxuICpcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICpcbiAqIFJlbGVhc2VkIG9uOiBGZWJydWFyeSAxMSwgMjAxOFxuICovXG4uc3dpcGVyLWNvbnRhaW5lcnttYXJnaW46MCBhdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtsaXN0LXN0eWxlOm5vbmU7cGFkZGluZzowO3otaW5kZXg6MX0uc3dpcGVyLWNvbnRhaW5lci1uby1mbGV4Ym94IC5zd2lwZXItc2xpZGV7ZmxvYXQ6bGVmdH0uc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXJ7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnN3aXBlci13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDoxO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Oi13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6LXdlYmtpdC10cmFuc2Zvcm07LW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sLXdlYmtpdC10cmFuc2Zvcm07LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9LnN3aXBlci1jb250YWluZXItYW5kcm9pZCAuc3dpcGVyLXNsaWRlLC5zd2lwZXItd3JhcHBlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX0uc3dpcGVyLWNvbnRhaW5lci1tdWx0aXJvdz4uc3dpcGVyLXdyYXBwZXJ7LXdlYmtpdC1mbGV4LXdyYXA6d3JhcDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXB9LnN3aXBlci1jb250YWluZXItZnJlZS1tb2RlPi5zd2lwZXItd3JhcHBlcnstd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0Oy1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O21hcmdpbjowIGF1dG99LnN3aXBlci1zbGlkZXstd2Via2l0LWZsZXgtc2hyaW5rOjA7LW1zLWZsZXgtbmVnYXRpdmU6MDtmbGV4LXNocmluazowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Oi13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6LXdlYmtpdC10cmFuc2Zvcm07LW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sLXdlYmtpdC10cmFuc2Zvcm19LnN3aXBlci1pbnZpc2libGUtYmxhbmstc2xpZGV7dmlzaWJpbGl0eTpoaWRkZW59LnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCwuc3dpcGVyLWNvbnRhaW5lci1hdXRvaGVpZ2h0IC5zd2lwZXItc2xpZGV7aGVpZ2h0OmF1dG99LnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXJ7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQ7LXdlYmtpdC1hbGlnbi1pdGVtczpmbGV4LXN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OmhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5OmhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTstby10cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxoZWlnaHQ7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0saGVpZ2h0O3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtLGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybX0uc3dpcGVyLWNvbnRhaW5lci0zZHstd2Via2l0LXBlcnNwZWN0aXZlOjEyMDBweDtwZXJzcGVjdGl2ZToxMjAwcHh9LnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1jdWJlLXNoYWRvdywuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXdyYXBwZXJ7LXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6cHJlc2VydmUtM2Q7dHJhbnNmb3JtLXN0eWxlOnByZXNlcnZlLTNkfS5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwuc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LC5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTB9LnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdHtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLHJpZ2h0IHRvcCxsZWZ0IHRvcCxmcm9tKHJnYmEoMCwwLDAsLjUpKSx0byhyZ2JhKDAsMCwwLDApKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudChyaWdodCxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudChyaWdodCxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LHJnYmEoMCwwLDAsLjUpLHJnYmEoMCwwLDAsMCkpfS5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0e2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AscmlnaHQgdG9wLGZyb20ocmdiYSgwLDAsMCwuNSkpLHRvKHJnYmEoMCwwLDAsMCkpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQscmdiYSgwLDAsMCwuNSkscmdiYSgwLDAsMCwwKSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQobGVmdCxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKX0uc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3B7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IGJvdHRvbSxsZWZ0IHRvcCxmcm9tKHJnYmEoMCwwLDAsLjUpKSx0byhyZ2JhKDAsMCwwLDApKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudChib3R0b20scmdiYSgwLDAsMCwuNSkscmdiYSgwLDAsMCwwKSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoYm90dG9tLHJnYmEoMCwwLDAsLjUpLHJnYmEoMCwwLDAsMCkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHRvcCxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKX0uc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b217YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9tKHJnYmEoMCwwLDAsLjUpKSx0byhyZ2JhKDAsMCwwLDApKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AscmdiYSgwLDAsMCwuNSkscmdiYSgwLDAsMCwwKSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLHJnYmEoMCwwLDAsLjUpLHJnYmEoMCwwLDAsMCkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDAsMCwwLC41KSxyZ2JhKDAsMCwwLDApKX0uc3dpcGVyLWNvbnRhaW5lci13cDgtaG9yaXpvbnRhbCwuc3dpcGVyLWNvbnRhaW5lci13cDgtaG9yaXpvbnRhbD4uc3dpcGVyLXdyYXBwZXJ7LW1zLXRvdWNoLWFjdGlvbjpwYW4teTt0b3VjaC1hY3Rpb246cGFuLXl9LnN3aXBlci1jb250YWluZXItd3A4LXZlcnRpY2FsLC5zd2lwZXItY29udGFpbmVyLXdwOC12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXJ7LW1zLXRvdWNoLWFjdGlvbjpwYW4teDt0b3VjaC1hY3Rpb246cGFuLXh9LnN3aXBlci1idXR0b24tbmV4dCwuc3dpcGVyLWJ1dHRvbi1wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7d2lkdGg6MjdweDtoZWlnaHQ6NDRweDttYXJnaW4tdG9wOi0yMnB4O3otaW5kZXg6MTA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1zaXplOjI3cHggNDRweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWRpc2FibGVkLC5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZHtvcGFjaXR5Oi4zNTtjdXJzb3I6YXV0bztwb2ludGVyLWV2ZW50czpub25lfS5zd2lwZXItYnV0dG9uLXByZXYsLnN3aXBlci1jb250YWluZXItcnRsIC5zd2lwZXItYnV0dG9uLW5leHR7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmclMjB4bWxucyUzRCdodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcnJTIwdmlld0JveCUzRCcwJTIwMCUyMDI3JTIwNDQnJTNFJTNDcGF0aCUyMGQlM0QnTTAlMkMyMkwyMiUyQzBsMi4xJTJDMi4xTDQuMiUyQzIybDE5LjklMkMxOS45TDIyJTJDNDRMMCUyQzIyTDAlMkMyMkwwJTJDMjJ6JyUyMGZpbGwlM0QnJTIzMDA3YWZmJyUyRiUzRSUzQyUyRnN2ZyUzRVwiKTtsZWZ0OjEwcHg7cmlnaHQ6YXV0b30uc3dpcGVyLWJ1dHRvbi1uZXh0LC5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2e2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnJTIweG1sbnMlM0QnaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJyUyMHZpZXdCb3glM0QnMCUyMDAlMjAyNyUyMDQ0JyUzRSUzQ3BhdGglMjBkJTNEJ00yNyUyQzIyTDI3JTJDMjJMNSUyQzQ0bC0yLjEtMi4xTDIyLjglMkMyMkwyLjklMkMyLjFMNSUyQzBMMjclMkMyMkwyNyUyQzIyeiclMjBmaWxsJTNEJyUyMzAwN2FmZiclMkYlM0UlM0MlMkZzdmclM0VcIik7cmlnaHQ6MTBweDtsZWZ0OmF1dG99LnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLXdoaXRlLC5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24td2hpdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmclMjB4bWxucyUzRCdodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcnJTIwdmlld0JveCUzRCcwJTIwMCUyMDI3JTIwNDQnJTNFJTNDcGF0aCUyMGQlM0QnTTAlMkMyMkwyMiUyQzBsMi4xJTJDMi4xTDQuMiUyQzIybDE5LjklMkMxOS45TDIyJTJDNDRMMCUyQzIyTDAlMkMyMkwwJTJDMjJ6JyUyMGZpbGwlM0QnJTIzZmZmZmZmJyUyRiUzRSUzQyUyRnN2ZyUzRVwiKX0uc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24td2hpdGUsLnN3aXBlci1jb250YWluZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi13aGl0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclMjB2aWV3Qm94JTNEJzAlMjAwJTIwMjclMjA0NCclM0UlM0NwYXRoJTIwZCUzRCdNMjclMkMyMkwyNyUyQzIyTDUlMkM0NGwtMi4xLTIuMUwyMi44JTJDMjJMMi45JTJDMi4xTDUlMkMwTDI3JTJDMjJMMjclMkMyMnonJTIwZmlsbCUzRCclMjNmZmZmZmYnJTJGJTNFJTNDJTJGc3ZnJTNFXCIpfS5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi1ibGFjaywuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWJsYWNre2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnJTIweG1sbnMlM0QnaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJyUyMHZpZXdCb3glM0QnMCUyMDAlMjAyNyUyMDQ0JyUzRSUzQ3BhdGglMjBkJTNEJ00wJTJDMjJMMjIlMkMwbDIuMSUyQzIuMUw0LjIlMkMyMmwxOS45JTJDMTkuOUwyMiUyQzQ0TDAlMkMyMkwwJTJDMjJMMCUyQzIyeiclMjBmaWxsJTNEJyUyMzAwMDAwMCclMkYlM0UlM0MlMkZzdmclM0VcIil9LnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWJsYWNrLC5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24tYmxhY2t7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmclMjB4bWxucyUzRCdodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcnJTIwdmlld0JveCUzRCcwJTIwMCUyMDI3JTIwNDQnJTNFJTNDcGF0aCUyMGQlM0QnTTI3JTJDMjJMMjclMkMyMkw1JTJDNDRsLTIuMS0yLjFMMjIuOCUyQzIyTDIuOSUyQzIuMUw1JTJDMEwyNyUyQzIyTDI3JTJDMjJ6JyUyMGZpbGwlM0QnJTIzMDAwMDAwJyUyRiUzRSUzQyUyRnN2ZyUzRVwiKX0uc3dpcGVyLWJ1dHRvbi1sb2Nre2Rpc3BsYXk6bm9uZX0uc3dpcGVyLXBhZ2luYXRpb257cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOi4zcyBvcGFjaXR5Oy1vLXRyYW5zaXRpb246LjNzIG9wYWNpdHk7dHJhbnNpdGlvbjouM3Mgb3BhY2l0eTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt6LWluZGV4OjEwfS5zd2lwZXItcGFnaW5hdGlvbi5zd2lwZXItcGFnaW5hdGlvbi1oaWRkZW57b3BhY2l0eTowfS5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsLnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwuc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb257Ym90dG9tOjEwcHg7bGVmdDowO3dpZHRoOjEwMCV9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pY3tvdmVyZmxvdzpoaWRkZW47Zm9udC1zaXplOjB9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0ey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC4zMyk7LW1zLXRyYW5zZm9ybTpzY2FsZSguMzMpO3RyYW5zZm9ybTpzY2FsZSguMzMpO3Bvc2l0aW9uOnJlbGF0aXZlfS5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7LW1zLXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1tYWluey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOy1tcy10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpfS5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtcHJldnstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguNjYpOy1tcy10cmFuc2Zvcm06c2NhbGUoLjY2KTt0cmFuc2Zvcm06c2NhbGUoLjY2KX0uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXYtcHJldnstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguMzMpOy1tcy10cmFuc2Zvcm06c2NhbGUoLjMzKTt0cmFuc2Zvcm06c2NhbGUoLjMzKX0uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW5leHR7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjY2KTstbXMtdHJhbnNmb3JtOnNjYWxlKC42Nik7dHJhbnNmb3JtOnNjYWxlKC42Nil9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0LW5leHR7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjMzKTstbXMtdHJhbnNmb3JtOnNjYWxlKC4zMyk7dHJhbnNmb3JtOnNjYWxlKC4zMyl9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHt3aWR0aDo4cHg7aGVpZ2h0OjhweDtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjEwMCU7YmFja2dyb3VuZDojMDAwO29wYWNpdHk6LjJ9YnV0dG9uLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHtib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0uc3dpcGVyLXBhZ2luYXRpb24tY2xpY2thYmxlIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7Y3Vyc29yOnBvaW50ZXJ9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmV7b3BhY2l0eToxO2JhY2tncm91bmQ6IzAwN2FmZn0uc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0c3tyaWdodDoxMHB4O3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtNTAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC01MCUsMCl9LnN3aXBlci1jb250YWluZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHttYXJnaW46NnB4IDA7ZGlzcGxheTpibG9ja30uc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWN7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt3aWR0aDo4cHh9LnN3aXBlci1jb250YWluZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC10cmFuc2l0aW9uOi4ycyB0b3AsLjJzIC13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb246LjJzIHRvcCwuMnMgLXdlYmtpdC10cmFuc2Zvcm07LW8tdHJhbnNpdGlvbjouMnMgdHJhbnNmb3JtLC4ycyB0b3A7dHJhbnNpdGlvbjouMnMgdHJhbnNmb3JtLC4ycyB0b3A7dHJhbnNpdGlvbjouMnMgdHJhbnNmb3JtLC4ycyB0b3AsLjJzIC13ZWJraXQtdHJhbnNmb3JtfS5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHttYXJnaW46MCA0cHh9LnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWN7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7d2hpdGUtc3BhY2U6bm93cmFwfS5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7LXdlYmtpdC10cmFuc2l0aW9uOi4ycyBsZWZ0LC4ycyAtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uOi4ycyBsZWZ0LC4ycyAtd2Via2l0LXRyYW5zZm9ybTstby10cmFuc2l0aW9uOi4ycyB0cmFuc2Zvcm0sLjJzIGxlZnQ7dHJhbnNpdGlvbjouMnMgdHJhbnNmb3JtLC4ycyBsZWZ0O3RyYW5zaXRpb246LjJzIHRyYW5zZm9ybSwuMnMgbGVmdCwuMnMgLXdlYmtpdC10cmFuc2Zvcm19LnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbC5zd2lwZXItY29udGFpbmVyLXJ0bD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7LXdlYmtpdC10cmFuc2l0aW9uOi4ycyByaWdodCwuMnMgLXdlYmtpdC10cmFuc2Zvcm07dHJhbnNpdGlvbjouMnMgcmlnaHQsLjJzIC13ZWJraXQtdHJhbnNmb3JtOy1vLXRyYW5zaXRpb246LjJzIHRyYW5zZm9ybSwuMnMgcmlnaHQ7dHJhbnNpdGlvbjouMnMgdHJhbnNmb3JtLC4ycyByaWdodDt0cmFuc2l0aW9uOi4ycyB0cmFuc2Zvcm0sLjJzIHJpZ2h0LC4ycyAtd2Via2l0LXRyYW5zZm9ybX0uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNSk7cG9zaXRpb246YWJzb2x1dGV9LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxse2JhY2tncm91bmQ6IzAwN2FmZjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgwKTstbXMtdHJhbnNmb3JtOnNjYWxlKDApO3RyYW5zZm9ybTpzY2FsZSgwKTstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46bGVmdCB0b3A7LW1zLXRyYW5zZm9ybS1vcmlnaW46bGVmdCB0b3A7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0IHRvcH0uc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpyaWdodCB0b3A7LW1zLXRyYW5zZm9ybS1vcmlnaW46cmlnaHQgdG9wO3RyYW5zZm9ybS1vcmlnaW46cmlnaHQgdG9wfS5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFye3dpZHRoOjEwMCU7aGVpZ2h0OjRweDtsZWZ0OjA7dG9wOjB9LnN3aXBlci1jb250YWluZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFye3dpZHRoOjRweDtoZWlnaHQ6MTAwJTtsZWZ0OjA7dG9wOjB9LnN3aXBlci1wYWdpbmF0aW9uLXdoaXRlIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZle2JhY2tncm91bmQ6I2ZmZn0uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24td2hpdGV7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4yNSl9LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXdoaXRlIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxse2JhY2tncm91bmQ6I2ZmZn0uc3dpcGVyLXBhZ2luYXRpb24tYmxhY2sgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmV7YmFja2dyb3VuZDojMDAwfS5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ibGFja3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjI1KX0uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tYmxhY2sgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGx7YmFja2dyb3VuZDojMDAwfS5zd2lwZXItcGFnaW5hdGlvbi1sb2Nre2Rpc3BsYXk6bm9uZX0uc3dpcGVyLXNjcm9sbGJhcntib3JkZXItcmFkaXVzOjEwcHg7cG9zaXRpb246cmVsYXRpdmU7LW1zLXRvdWNoLWFjdGlvbjpub25lO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMSl9LnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXNjcm9sbGJhcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjElO2JvdHRvbTozcHg7ei1pbmRleDo1MDtoZWlnaHQ6NXB4O3dpZHRoOjk4JX0uc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbD4uc3dpcGVyLXNjcm9sbGJhcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDozcHg7dG9wOjElO3otaW5kZXg6NTA7d2lkdGg6NXB4O2hlaWdodDo5OCV9LnN3aXBlci1zY3JvbGxiYXItZHJhZ3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNSk7Ym9yZGVyLXJhZGl1czoxMHB4O2xlZnQ6MDt0b3A6MH0uc3dpcGVyLXNjcm9sbGJhci1jdXJzb3ItZHJhZ3tjdXJzb3I6bW92ZX0uc3dpcGVyLXNjcm9sbGJhci1sb2Nre2Rpc3BsYXk6bm9uZX0uc3dpcGVyLXpvb20tY29udGFpbmVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcn0uc3dpcGVyLXpvb20tY29udGFpbmVyPmNhbnZhcywuc3dpcGVyLXpvb20tY29udGFpbmVyPmltZywuc3dpcGVyLXpvb20tY29udGFpbmVyPnN2Z3ttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCU7LW8tb2JqZWN0LWZpdDpjb250YWluO29iamVjdC1maXQ6Y29udGFpbn0uc3dpcGVyLXNsaWRlLXpvb21lZHtjdXJzb3I6bW92ZX0uc3dpcGVyLWxhenktcHJlbG9hZGVye3dpZHRoOjQycHg7aGVpZ2h0OjQycHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTttYXJnaW4tbGVmdDotMjFweDttYXJnaW4tdG9wOi0yMXB4O3otaW5kZXg6MTA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjUwJTstbXMtdHJhbnNmb3JtLW9yaWdpbjo1MCU7dHJhbnNmb3JtLW9yaWdpbjo1MCU7LXdlYmtpdC1hbmltYXRpb246c3dpcGVyLXByZWxvYWRlci1zcGluIDFzIHN0ZXBzKDEyLGVuZCkgaW5maW5pdGU7YW5pbWF0aW9uOnN3aXBlci1wcmVsb2FkZXItc3BpbiAxcyBzdGVwcygxMixlbmQpIGluZmluaXRlfS5zd2lwZXItbGF6eS1wcmVsb2FkZXI6YWZ0ZXJ7ZGlzcGxheTpibG9jaztjb250ZW50OicnO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmclMjB2aWV3Qm94JTNEJzAlMjAwJTIwMTIwJTIwMTIwJyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclMjB4bWxucyUzQXhsaW5rJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJyUzRSUzQ2RlZnMlM0UlM0NsaW5lJTIwaWQlM0QnbCclMjB4MSUzRCc2MCclMjB4MiUzRCc2MCclMjB5MSUzRCc3JyUyMHkyJTNEJzI3JyUyMHN0cm9rZSUzRCclMjM2YzZjNmMnJTIwc3Ryb2tlLXdpZHRoJTNEJzExJyUyMHN0cm9rZS1saW5lY2FwJTNEJ3JvdW5kJyUyRiUzRSUzQyUyRmRlZnMlM0UlM0NnJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuMjcnJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuMjcnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgzMCUyMDYwJTJDNjApJyUyRiUzRSUzQ3VzZSUyMHhsaW5rJTNBaHJlZiUzRCclMjNsJyUyMG9wYWNpdHklM0QnLjI3JyUyMHRyYW5zZm9ybSUzRCdyb3RhdGUoNjAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy4yNyclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDkwJTIwNjAlMkM2MCknJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuMjcnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgxMjAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy4yNyclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDE1MCUyMDYwJTJDNjApJyUyRiUzRSUzQ3VzZSUyMHhsaW5rJTNBaHJlZiUzRCclMjNsJyUyMG9wYWNpdHklM0QnLjM3JyUyMHRyYW5zZm9ybSUzRCdyb3RhdGUoMTgwJTIwNjAlMkM2MCknJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuNDYnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgyMTAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy41NiclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDI0MCUyMDYwJTJDNjApJyUyRiUzRSUzQ3VzZSUyMHhsaW5rJTNBaHJlZiUzRCclMjNsJyUyMG9wYWNpdHklM0QnLjY2JyUyMHRyYW5zZm9ybSUzRCdyb3RhdGUoMjcwJTIwNjAlMkM2MCknJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuNzUnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgzMDAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy44NSclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDMzMCUyMDYwJTJDNjApJyUyRiUzRSUzQyUyRmclM0UlM0MlMkZzdmclM0VcIik7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1zaXplOjEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5zd2lwZXItbGF6eS1wcmVsb2FkZXItd2hpdGU6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmclMjB2aWV3Qm94JTNEJzAlMjAwJTIwMTIwJTIwMTIwJyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclMjB4bWxucyUzQXhsaW5rJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJyUzRSUzQ2RlZnMlM0UlM0NsaW5lJTIwaWQlM0QnbCclMjB4MSUzRCc2MCclMjB4MiUzRCc2MCclMjB5MSUzRCc3JyUyMHkyJTNEJzI3JyUyMHN0cm9rZSUzRCclMjNmZmYnJTIwc3Ryb2tlLXdpZHRoJTNEJzExJyUyMHN0cm9rZS1saW5lY2FwJTNEJ3JvdW5kJyUyRiUzRSUzQyUyRmRlZnMlM0UlM0NnJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuMjcnJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuMjcnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgzMCUyMDYwJTJDNjApJyUyRiUzRSUzQ3VzZSUyMHhsaW5rJTNBaHJlZiUzRCclMjNsJyUyMG9wYWNpdHklM0QnLjI3JyUyMHRyYW5zZm9ybSUzRCdyb3RhdGUoNjAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy4yNyclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDkwJTIwNjAlMkM2MCknJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuMjcnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgxMjAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy4yNyclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDE1MCUyMDYwJTJDNjApJyUyRiUzRSUzQ3VzZSUyMHhsaW5rJTNBaHJlZiUzRCclMjNsJyUyMG9wYWNpdHklM0QnLjM3JyUyMHRyYW5zZm9ybSUzRCdyb3RhdGUoMTgwJTIwNjAlMkM2MCknJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuNDYnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgyMTAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy41NiclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDI0MCUyMDYwJTJDNjApJyUyRiUzRSUzQ3VzZSUyMHhsaW5rJTNBaHJlZiUzRCclMjNsJyUyMG9wYWNpdHklM0QnLjY2JyUyMHRyYW5zZm9ybSUzRCdyb3RhdGUoMjcwJTIwNjAlMkM2MCknJTJGJTNFJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJyUyM2wnJTIwb3BhY2l0eSUzRCcuNzUnJTIwdHJhbnNmb3JtJTNEJ3JvdGF0ZSgzMDAlMjA2MCUyQzYwKSclMkYlM0UlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QnJTIzbCclMjBvcGFjaXR5JTNEJy44NSclMjB0cmFuc2Zvcm0lM0Qncm90YXRlKDMzMCUyMDYwJTJDNjApJyUyRiUzRSUzQyUyRmclM0UlM0MlMkZzdmclM0VcIil9QC13ZWJraXQta2V5ZnJhbWVzIHN3aXBlci1wcmVsb2FkZXItc3BpbnsxMDAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBzd2lwZXItcHJlbG9hZGVyLXNwaW57MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItbm90aWZpY2F0aW9ue3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDt6LWluZGV4Oi0xMDAwfS5zd2lwZXItY29udGFpbmVyLWZhZGUuc3dpcGVyLWNvbnRhaW5lci1mcmVlLW1vZGUgLnN3aXBlci1zbGlkZXstd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0Oy1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0fS5zd2lwZXItY29udGFpbmVyLWZhZGUgLnN3aXBlci1zbGlkZXtwb2ludGVyLWV2ZW50czpub25lOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5Oy1vLXRyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHl9LnN3aXBlci1jb250YWluZXItZmFkZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGV7cG9pbnRlci1ldmVudHM6bm9uZX0uc3dpcGVyLWNvbnRhaW5lci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlLC5zd2lwZXItY29udGFpbmVyLWZhZGUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmV7cG9pbnRlci1ldmVudHM6YXV0b30uc3dpcGVyLWNvbnRhaW5lci1jdWJle292ZXJmbG93OnZpc2libGV9LnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRle3BvaW50ZXItZXZlbnRzOm5vbmU7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjE7dmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbXMtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZXtwb2ludGVyLWV2ZW50czpub25lfS5zd2lwZXItY29udGFpbmVyLWN1YmUuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1zbGlkZXstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTAwJSAwOy1tcy10cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH0uc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlLC5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmV7cG9pbnRlci1ldmVudHM6YXV0b30uc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlLC5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0LC5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0Ky5zd2lwZXItc2xpZGUsLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLXByZXZ7cG9pbnRlci1ldmVudHM6YXV0bzt2aXNpYmlsaXR5OnZpc2libGV9LnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LC5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3B7ei1pbmRleDowOy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59LnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLWN1YmUtc2hhZG93e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6IzAwMDtvcGFjaXR5Oi42Oy13ZWJraXQtZmlsdGVyOmJsdXIoNTBweCk7ZmlsdGVyOmJsdXIoNTBweCk7ei1pbmRleDowfS5zd2lwZXItY29udGFpbmVyLWZsaXB7b3ZlcmZsb3c6dmlzaWJsZX0uc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGV7cG9pbnRlci1ldmVudHM6bm9uZTstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6MX0uc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZXtwb2ludGVyLWV2ZW50czpub25lfS5zd2lwZXItY29udGFpbmVyLWZsaXAgLnN3aXBlci1zbGlkZS1hY3RpdmUsLnN3aXBlci1jb250YWluZXItZmxpcCAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZXtwb2ludGVyLWV2ZW50czphdXRvfS5zd2lwZXItY29udGFpbmVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLC5zd2lwZXItY29udGFpbmVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwuc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LC5zd2lwZXItY29udGFpbmVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9we3otaW5kZXg6MDstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5zd2lwZXItY29udGFpbmVyLWNvdmVyZmxvdyAuc3dpcGVyLXdyYXBwZXJ7LW1zLXBlcnNwZWN0aXZlOjEyMDBweH0iLCIuc3MtbWFpbntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazt1c2VyLXNlbGVjdDpub25lO2NvbG9yOiM2NjY7d2lkdGg6MTAwJX0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVke2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO2hlaWdodDozMHB4O3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgI2RjZGVlMjtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3V0bGluZTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzfS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQuc3MtZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZGNkZWUyO2N1cnNvcjpub3QtYWxsb3dlZH0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkLnNzLW9wZW4tYWJvdmV7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LnNzLW1haW4gLnNzLXNpbmdsZS1zZWxlY3RlZC5zcy1vcGVuLWJlbG93e2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQgLnBsYWNlaG9sZGVye2ZsZXg6MSAxIDEwMCU7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOmNhbGMoMTAwJSAtIDMwcHgpO2xpbmUtaGVpZ2h0OjFlbTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnNzLW1haW4gLnNzLXNpbmdsZS1zZWxlY3RlZCAucGxhY2Vob2xkZXIsLnNzLW1haW4gLnNzLXNpbmdsZS1zZWxlY3RlZCAucGxhY2Vob2xkZXIgKntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5wbGFjZWhvbGRlciAqe3dpZHRoOmF1dG99LnNzLW1haW4gLnNzLXNpbmdsZS1zZWxlY3RlZCAucGxhY2Vob2xkZXIgLnNzLWRpc2FibGVke2N1cnNvcjpwb2ludGVyO2NvbG9yOiNkY2RlZTJ9LnNzLW1haW4gLnNzLXNpbmdsZS1zZWxlY3RlZCAuc3MtZGVzZWxlY3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7ZmxleDowIDEgYXV0bzttYXJnaW46MCA1cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmfS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQgLnNzLWRlc2VsZWN0LnNzLWhpZGV7ZGlzcGxheTpub25lfS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQgLnNzLWFycm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2ZsZXg6MCAxIGF1dG87bWFyZ2luOjAgNXB4fS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQgLnNzLWFycm93IHNwYW57Ym9yZGVyOnNvbGlkICM2NjY7Ym9yZGVyLXdpZHRoOjAgMnB4IDJweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6M3B4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyxtYXJnaW4gLjJzfS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQgLnNzLWFycm93IHNwYW4uYXJyb3ctdXB7dHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKTttYXJnaW46M3B4IDAgMH0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5zcy1hcnJvdyBzcGFuLmFycm93LWRvd257dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7bWFyZ2luOi0zcHggMCAwfS5zcy1tYWluIC5zcy1tdWx0aS1zZWxlY3RlZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2N1cnNvcjpwb2ludGVyO21pbi1oZWlnaHQ6MzBweDt3aWR0aDoxMDAlO3BhZGRpbmc6MCAwIDAgM3B4O2JvcmRlcjoxcHggc29saWQgI2RjZGVlMjtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3V0bGluZTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzfS5zcy1tYWluIC5zcy1tdWx0aS1zZWxlY3RlZC5zcy1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNkY2RlZTI7Y3Vyc29yOm5vdC1hbGxvd2VkfS5zcy1tYWluIC5zcy1tdWx0aS1zZWxlY3RlZC5zcy1kaXNhYmxlZCAuc3MtdmFsdWVzIC5zcy1kaXNhYmxlZHtjb2xvcjojNjY2fS5zcy1tYWluIC5zcy1tdWx0aS1zZWxlY3RlZC5zcy1kaXNhYmxlZCAuc3MtdmFsdWVzIC5zcy12YWx1ZSAuc3MtdmFsdWUtZGVsZXRle2N1cnNvcjpub3QtYWxsb3dlZH0uc3MtbWFpbiAuc3MtbXVsdGktc2VsZWN0ZWQuc3Mtb3Blbi1hYm92ZXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uc3MtbWFpbiAuc3MtbXVsdGktc2VsZWN0ZWQuc3Mtb3Blbi1iZWxvd3tib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uc3MtbWFpbiAuc3MtbXVsdGktc2VsZWN0ZWQgLnNzLXZhbHVlc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7ZmxleDoxIDEgMTAwJTt3aWR0aDpjYWxjKDEwMCUgLSAzMHB4KX0uc3MtbWFpbiAuc3MtbXVsdGktc2VsZWN0ZWQgLnNzLXZhbHVlcyAuc3MtZGlzYWJsZWR7ZGlzcGxheTpmbGV4O3BhZGRpbmc6NHB4IDVweDttYXJnaW46MnB4IDA7bGluZS1oZWlnaHQ6MWVtO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO2NvbG9yOiNkY2RlZTI7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfUBrZXlmcmFtZXMgc2NhbGVJbnswJXt0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowfXRve3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgc2NhbGVPdXR7MCV7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MX10b3t0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowfX0uc3MtbWFpbiAuc3MtbXVsdGktc2VsZWN0ZWQgLnNzLXZhbHVlcyAuc3MtdmFsdWV7ZGlzcGxheTpmbGV4O3VzZXItc2VsZWN0Om5vbmU7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6M3B4IDVweDttYXJnaW46M3B4IDVweCAzcHggMDtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzU4OTdmYjtib3JkZXItcmFkaXVzOjRweDthbmltYXRpb24tbmFtZTpzY2FsZUluO2FuaW1hdGlvbi1kdXJhdGlvbjouMnM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDthbmltYXRpb24tZmlsbC1tb2RlOmJvdGh9LnNzLW1haW4gLnNzLW11bHRpLXNlbGVjdGVkIC5zcy12YWx1ZXMgLnNzLXZhbHVlLnNzLW91dHthbmltYXRpb24tbmFtZTpzY2FsZU91dDthbmltYXRpb24tZHVyYXRpb246LjJzO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXR9LnNzLW1haW4gLnNzLW11bHRpLXNlbGVjdGVkIC5zcy12YWx1ZXMgLnNzLXZhbHVlIC5zcy12YWx1ZS1kZWxldGV7bWFyZ2luOjAgMCAwIDVweDtjdXJzb3I6cG9pbnRlcn0uc3MtbWFpbiAuc3MtbXVsdGktc2VsZWN0ZWQgLnNzLWFkZHtkaXNwbGF5OmZsZXg7ZmxleDowIDEgM3B4O21hcmdpbjo5cHggMTJweCAwIDVweH0uc3MtbWFpbiAuc3MtbXVsdGktc2VsZWN0ZWQgLnNzLWFkZCAuc3MtcGx1c3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojNjY2O3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoxMHB4O3dpZHRoOjJweDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnN9LnNzLW1haW4gLnNzLW11bHRpLXNlbGVjdGVkIC5zcy1hZGQgLnNzLXBsdXM6YWZ0ZXJ7YmFja2dyb3VuZDojNjY2O2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MnB4O3dpZHRoOjEwcHg7bGVmdDotNHB4O3RvcDo0cHh9LnNzLW1haW4gLnNzLW11bHRpLXNlbGVjdGVkIC5zcy1hZGQgLnNzLXBsdXMuc3MtY3Jvc3N7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LnNzLW1haW4gLnNzLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTttYXJnaW46LTFweCAwIDA7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjoxcHggc29saWQgI2RjZGVlMjt6LWluZGV4OjEwMTA7YmFja2dyb3VuZC1jb2xvcjojZmZmO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIHRvcDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMsb3BhY2l0eSAuMnM7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVkoMCl9LnNzLW1haW4gLnNzLWNvbnRlbnQuc3Mtb3BlbntkaXNwbGF5OmJsb2NrO29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVZKDEpfS5zcy1tYWluIC5zcy1jb250ZW50IC5zcy1zZWFyY2h7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztwYWRkaW5nOjhweCAxMHB4fS5zcy1tYWluIC5zcy1jb250ZW50IC5zcy1zZWFyY2guc3MtaGlkZSwuc3MtbWFpbiAuc3MtY29udGVudCAuc3Mtc2VhcmNoLnNzLWhpZGUgaW5wdXR7aGVpZ2h0OjA7b3BhY2l0eTowO3BhZGRpbmc6MDttYXJnaW46MH0uc3MtbWFpbiAuc3MtY29udGVudCAuc3Mtc2VhcmNoIGlucHV0e2Rpc3BsYXk6aW5saW5lLWZsZXg7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2ZsZXg6MSAxIGF1dG87d2lkdGg6MTAwJTttaW4td2lkdGg6MDtoZWlnaHQ6MzBweDtwYWRkaW5nOjVweCAxMHB4O21hcmdpbjowO2JvcmRlcjoxcHggc29saWQgI2RjZGVlMjtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3V0bGluZTowO3RleHQtYWxpZ246bGVmdDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZH0uc3MtbWFpbiAuc3MtY29udGVudCAuc3Mtc2VhcmNoIGlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjojYjNiM2IzfS5zcy1tYWluIC5zcy1jb250ZW50IC5zcy1zZWFyY2ggaW5wdXQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgNXB4ICM1ODk3ZmJ9LnNzLW1haW4gLnNzLWNvbnRlbnQgLnNzLXNlYXJjaCAuc3MtYWRkYWJsZXtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjcwMDtmbGV4OjAgMCAzMHB4O2hlaWdodDozMHB4O21hcmdpbjowIDAgMCA4cHg7Ym9yZGVyOjFweCBzb2xpZCAjZGNkZWUyO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uc3MtbWFpbiAuc3MtY29udGVudCAuc3MtYWRkYWJsZXtwYWRkaW5nLXRvcDowfS5zcy1tYWluIC5zcy1jb250ZW50IC5zcy1saXN0e21heC1oZWlnaHQ6MjAwcHg7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3RleHQtYWxpZ246bGVmdH0uc3MtbWFpbiAuc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0Z3JvdXAgLnNzLW9wdGdyb3VwLWxhYmVse3BhZGRpbmc6NnB4IDEwcHg7Zm9udC13ZWlnaHQ6NzAwfS5zcy1tYWluIC5zcy1jb250ZW50IC5zcy1saXN0IC5zcy1vcHRncm91cCAuc3Mtb3B0aW9ue3BhZGRpbmc6NnB4IDZweCA2cHggMjVweH0uc3MtbWFpbiAuc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0aW9ue3BhZGRpbmc6NnB4IDEwcHg7Y3Vyc29yOnBvaW50ZXI7dXNlci1zZWxlY3Q6bm9uZX0uc3MtbWFpbiAuc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0aW9uICp7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnNzLW1haW4gLnNzLWNvbnRlbnQgLnNzLWxpc3QgLnNzLW9wdGlvbi5zcy1oaWdobGlnaHRlZCwuc3MtbWFpbiAuc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0aW9uOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNTg5N2ZifS5zcy1tYWluIC5zcy1jb250ZW50IC5zcy1saXN0IC5zcy1vcHRpb24uc3MtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6I2RjZGVlMjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnNzLW1haW4gLnNzLWNvbnRlbnQgLnNzLWxpc3QgLnNzLW9wdGlvbi5zcy1oaWRle2Rpc3BsYXk6bm9uZX0uc3MtbWFpbiAuc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0aW9uIC5zcy1zZWFyY2gtaGlnaGxpZ2h0e2JhY2tncm91bmQtY29sb3I6I2ZmZjcwMDYyfSIsIi8qISBub3JtYWxpemUuY3NzIHY4LjAuMCB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuZmllbGRzZXQge1xuICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cbiAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cbiAqL1xuXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cblxuLyogTWlzY1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjUkVTRVRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQSB2ZXJ5IHNpbXBsZSByZXNldCB0aGF0IHNpdHMgb24gdG9wIG9mIE5vcm1hbGl6ZS5jc3MuXG4gKi9cblxuYm9keSxcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG5ibG9ja3F1b3RlLCBwLCBwcmUsXG5kbCwgZGQsIG9sLCB1bCxcbmZpZ3VyZSxcbmhyLFxuZmllbGRzZXQsIGxlZ2VuZCB7XG4gIG1hcmdpbjogIDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRyYWlsaW5nIG1hcmdpbnMgZnJvbSBuZXN0ZWQgbGlzdHMuXG4gKi9cblxubGkgPiB7XG4gIG9sLFxuICB1bCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHRhYmxlIHNwYWNpbmcuXG4gKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuLyoqXG4gKiAxLiBSZXNldCBDaHJvbWUgYW5kIEZpcmVmb3ggYmVoYXZpb3VyIHdoaWNoIHNldHMgYSBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgXG4gKiAgICBvbiBmaWVsZHNldHMuXG4gKi9cblxuZmllbGRzZXQge1xuICBtaW4td2lkdGg6IDA7IC8qIFsxXSAqL1xuICBib3JkZXI6IDA7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1NIQVJFRFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBTaGFyZWQgZGVjbGFyYXRpb25zIGZvciBjZXJ0YWluIGVsZW1lbnRzLlxuICovXG5cbmFkZHJlc3MsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxuYmxvY2txdW90ZSwgcHJlLFxuZGwsIG9sLCB1bCxcbmhyLFxudGFibGUsXG5maWVsZHNldCB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXVuaXQ7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8qKlxuICogQ29uc2lzdGVudCBpbmRlbnRhdGlvbiBmb3IgbGlzdHMuXG4gKi9cblxuZGQsIG9sLCB1bCB7XG4gIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy11bml0O1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNQUklOVFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBWZXJ5IGNydWRlLCByZXNldC1saWtlIHN0eWxlcyB0YWtlbiBmcm9tIHRoZSBIVE1MNSBCb2lsZXJwbGF0ZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2Jsb2IvNS4zLjAvZGlzdC9kb2MvY3NzLm1kI3ByaW50LXN0eWxlc1xuICogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvZGlzdC9jc3MvbWFpbi5jc3MjTDIwNS1MMjgyXG4gKi9cblxuIEBtZWRpYSBwcmludCB7XG4gIC8qKlxuICAgKiAxLiBCbGFjayBwcmludHMgZmFzdGVyOiBodHRwOi8vd3d3LnNhbmJlaWppLmNvbS9hcmNoaXZlcy85NTNcbiAgICovXG5cbiAgKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvKiBbMV0gKi9cbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIGEsIGE6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cblxuICBhW2hyZWZdOjphZnRlciB7XG4gICAgY29udGVudDogXCIgKFwiIGF0dHIoaHJlZikgXCIpXCI7XG4gIH1cblxuICBhYmJyW3RpdGxlXTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb27igJl0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsIG9yIHVzZSB0aGUgYGphdmFzY3JpcHQ6YFxuICAgKiBwc2V1ZG8gcHJvdG9jb2wuXG4gICAqL1xuXG4gIGFbaHJlZl49XCIjXCJdOjphZnRlcixcbiAgYVtocmVmXj1cImphdmFzY3JpcHQ6XCJdOjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxuXG4gIHByZSxcbiAgYmxvY2txdW90ZSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnRpbmcgVGFibGVzOiBodHRwOi8vY3NzLWRpc2N1c3MuaW5jdXRpby5jb20vd2lraS9QcmludGluZ19UYWJsZXNcbiAgICovXG5cbiAgdGhlYWQge1xuICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcbiAgfVxuXG4gIHRyLFxuICBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuXG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIH1cblxuICBwLFxuICBoMixcbiAgaDMge1xuICAgIG9ycGhhbnM6IDM7XG4gICAgd2lkb3dzOiAzO1xuICB9XG5cbiAgaDIsXG4gIGgzIHtcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNCTE9DS1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBTdGFja2VkIGltYWdlLXdpdGgtdGV4dCBvYmplY3QuIEEgc2ltcGxlIGFic3RyYWN0aW9uIHRvIGNvdmVyIGEgdmVyeSBjb21tb25seVxuICogb2NjdXJyaW5nIGRlc2lnbiBwYXR0ZXJuLlxuICovXG5cbkBtaXhpbiBvLWJsb2NrKCRzcGFjaW5nOiA0LCAkc2VsZWN0b3I6IG51bGwpIHtcbiAgJHJvb3Q6IG51bGw7XG5cbiAgQGlmICRzZWxlY3RvciAhPSBudWxsIHtcbiAgICAkcm9vdDogJHNlbGVjdG9yO1xuICB9IEBlbHNlIHtcbiAgICAkcm9vdDoga2lsbC12YXJpYW50KCYpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgI3skcm9vdH1fX2NvbnRlbnQge1xuICAgIHBhZGRpbmc6IHNwYWNpbmcoJHNwYWNpbmcpO1xuICB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0JPWFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBUaGUgYm94IG9iamVjdCBzaW1wbHkgYm94ZXMgb2ZmIGNvbnRlbnQuIEV4dGVuZCB3aXRoIGNvc21ldGljIHN0eWxlcyBpbiB0aGVcbiAqIENvbXBvbmVudHMgbGF5ZXIuXG4gKi9cblxuQG1peGluIG8tYm94KCRwYWRkaW5nOiBhbGwpIHtcbiAgLy8gQGluY2x1ZGUgY2xlYXJmaXgoKTtcblxuICBkaXNwbGF5OiBibG9jaztcblxuICBAaWYgJHBhZGRpbmcgPT0gYWxsIHtcbiAgICBwYWRkaW5nOiBzcGFjaW5nKDEyIDQpO1xuICB9IEBlbHNlIGlmICRwYWRkaW5nID09IGhvcml6b250YWwge1xuICAgIHBhZGRpbmc6IHNwYWNpbmcoMCA0KTtcbiAgfSBAZWxzZSBpZiAkcGFkZGluZyA9PSB2ZXJ0aWNhbCB7XG4gICAgcGFkZGluZzogc3BhY2luZygxMiAwKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20obSkge1xuICAgIEBpZiAkcGFkZGluZyA9PSBhbGwge1xuICAgICAgcGFkZGluZzogc3BhY2luZygxOCAxMCk7XG4gICAgfSBAZWxzZSBpZiAkcGFkZGluZyA9PSBob3Jpem9udGFsIHtcbiAgICAgIHBhZGRpbmc6IHNwYWNpbmcoMCAxMCk7XG4gICAgfSBAZWxzZSBpZiAkcGFkZGluZyA9PSB2ZXJ0aWNhbCB7XG4gICAgICBwYWRkaW5nOiBzcGFjaW5nKDE4IDApO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20obCkge1xuICAgIEBpZiAkcGFkZGluZyA9PSBhbGwge1xuICAgICAgcGFkZGluZzogc3BhY2luZygyNSAxMCk7XG4gICAgfSBAZWxzZSBpZiAkcGFkZGluZyA9PSBob3Jpem9udGFsIHtcbiAgICAgIHBhZGRpbmc6IHNwYWNpbmcoMCAxMCk7XG4gICAgfSBAZWxzZSBpZiAkcGFkZGluZyA9PSB2ZXJ0aWNhbCB7XG4gICAgICBwYWRkaW5nOiBzcGFjaW5nKDI1IDApO1xuICAgIH1cbiAgfVxuXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cbiIsIkBtaXhpbiBvLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuICAvLyBib3JkZXItcmFkaXVzOiAwLjEyNXJlbTtcbiAgY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtLWJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjEyNTtcbiAgcGFkZGluZzogMXJlbSAzcmVtO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gIG1pbi13aWR0aDogMTIuNXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihwYWxldHRlKGJyYW5kKSwgNSUpO1xuICAgIGNvbG9yOiBwYWxldHRlKHdoaXRlKTtcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4ocGFsZXR0ZShicmFuZCksIDEwJSk7XG4gICAgY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICB9XG59XG5cbkBtaXhpbiBvLWJ1dHRvbi0tdGV4dCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGNvbG9yOiAkY29sb3ItLWxpbms7XG4gIHBhZGRpbmc6IDA7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogZGFya2VuKCRjb2xvci0tbGluaywgNSUpO1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiBkYXJrZW4oJGNvbG9yLS1saW5rLCAxMCUpO1xuICB9XG59XG4iLCJAbWl4aW4gY3VzdG9tLW9wdGlvbigkdHlwZTogY2hlY2tib3gpIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IHNwYWNpbmcoLTAuNSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBoZWlnaHQ6IDEuMTI1cmVtO1xuICB3aWR0aDogIDEuMTI1cmVtO1xuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEuMTI1cmVtO1xuICAgIGJvcmRlcjogcGFsZXR0ZShibGFjaykgMnB4IHNvbGlkO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcyAkdHJhbnNpdGlvbiwgYm9yZGVyLWNvbG9yIDAuM3MgJHRyYW5zaXRpb247XG4gICAgdG9wOiAgMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogIDEwMCU7XG5cbiAgICBAaWYgJHR5cGUgPT0gY2hlY2tib3gge1xuICAgICAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07XG4gICAgfSBAZWxzZSBpZiAkdHlwZSA9PSByYWRpbyB7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdHlwZSA9PSByYWRpbyB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShibGFjayk7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAgNTAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDAuMDEpO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzICR0cmFuc2l0aW9uLCBvcGFjaXR5IDAuM3MgJHRyYW5zaXRpb24sIHRyYW5zZm9ybSAwLjNzICR0cmFuc2l0aW9uO1xuICAgICAgaGVpZ2h0OiAwLjVyZW07XG4gICAgICB3aWR0aDogIDAuNXJlbTtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG5cbiAgJjpjaGVja2VkIHtcbiAgICBAaWYgJHR5cGUgPT0gY2hlY2tib3gge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKGJsYWNrKTtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtODtiYXNlNjQsUEhOMlp5QnBaRDBpYVdOdmJpMWphR1ZqYXlJZ1ptbHNiRDBpSTBaR1JrWkdSaUlnYUdWcFoyaDBQU0l4TmlJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQjNhV1IwYUQwaU1UWWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SStEUW9nSUNBZ1BIQmhkR2dnWkQwaVRUa2dNVFl1TVRkTU5DNDRNeUF4TW13dE1TNDBNaUF4TGpReFREa2dNVGtnTWpFZ04yd3RNUzQwTVMweExqUXhlaUl2UGcwS1BDOXpkbWMrJyk7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShicmFuZCk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkdHlwZSA9PSByYWRpbyB7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICArIGxhYmVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IHNwYWNpbmcoMSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyAkdHJhbnNpdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogcGFsZXR0ZShicmFuZCk7XG4gICAgfVxuXG4gICAgQGlmICR0eXBlID09IHJhZGlvIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgICsgbGFiZWwge1xuICAgICAgY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuICAgIH1cbiAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNMSVNUXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFN0cmlwIGxpc3QtbGlrZSBhcHBlYXJhbmNlIGZyb20gbGlzdHMgYnkgcmVtb3ZpbmcgdGhlaXIgYnVsbGV0cyBhbmQgYW55XG4gKiBpbmRlbnRhdGlvbi5cbiAqL1xuXG5AbWl4aW4gby1saXN0LS1iYXJlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgPiBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgbGlzdC1pbmxpbmUgb2JqZWN0IHNpbXBseSBkaXNwbGF5cyBhIGxpc3Qgb2YgaXRlbXMgaW4gb25lIGxpbmUuXG4gKi9cblxuQG1peGluIG8tbGlzdC0taW5saW5lIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbkBtaXhpbiBvLWxpc3QtLWZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuQG1peGluIG8tbGlzdC0taW5saW5lLWZsZXgge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbkBtaXhpbiBvLWxpc3RfX2l0ZW0ge1xuICBib3JkZXItdG9wOiAkY29sb3ItLWJvcmRlciAycHggc29saWQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IHNwYWNpbmcoMyAwKTtcblxuICAmX19pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC1ncm93OiAxO1xuICB9XG59XG5cbkBtaXhpbiBvLWxpc3QtLXRlYXNlcnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIEBpbmNsdWRlIGZyb20ocykge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgfVxufVxuXG5AbWl4aW4gby1saXN0X19pdGVtLS10ZWFzZXIge1xuICBmbGV4LWJhc2lzOiAxMDAlO1xuXG4gIEBpbmNsdWRlIGZyb20ocykge1xuICAgIGZsZXgtYmFzaXM6IGNhbGMoI3twZXJjZW50YWdlKDEvMil9IC0gI3tzcGFjaW5nKDQgLyAyKX0pO1xuICAgIG1hcmdpbi1yaWdodDogc3BhY2luZyg0KTtcblxuICAgICY6bnRoLW9mLXR5cGUoMm4pIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICBmbGV4LWJhc2lzOiBjYWxjKCN7cGVyY2VudGFnZSgxLzMpfSAtICN7c3BhY2luZyg0IC8gMyl9KTtcbiAgICBtYXJnaW4tcmlnaHQ6IHNwYWNpbmcoMik7XG5cbiAgICAmOm50aC1vZi10eXBlKDJuKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IHNwYWNpbmcoMik7XG4gICAgfVxuXG4gICAgJjpudGgtb2YtdHlwZSgzbikge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20obCkge1xuICAgIGZsZXgtYmFzaXM6IGNhbGMoI3twZXJjZW50YWdlKDEvMyl9IC0gI3tzcGFjaW5nKDIwIC8gMyl9KTtcbiAgICBtYXJnaW4tcmlnaHQ6IHNwYWNpbmcoMTApO1xuXG4gICAgJjpudGgtb2YtdHlwZSgybikge1xuICAgICAgbWFyZ2luLXJpZ2h0OiBzcGFjaW5nKDEwKTtcbiAgICB9XG4gIH1cbn1cbiIsIiIsIkBtaXhpbiBvLW92ZXJsYXkoJG9wYWNpdHk6IDAuNSwgJGJnOiBwYWxldHRlKGJsYWNrKSwgJHBvaW50ZXItZXZlbnRzOiBub25lKSB7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBiYWNrZ3JvdW5kOiAkYmc7XG4gICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgcG9pbnRlci1ldmVudHM6ICRwb2ludGVyLWV2ZW50cztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAgMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogIDEwMCU7XG4gICAgei1pbmRleDogMTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgfVxufVxuIiwiLy8vIFRyaWFuZ2xlIGhlbHBlciBtaXhpblxuLy8vIEBwYXJhbSB7RGlyZWN0aW9ufSAkZGlyZWN0aW9uIC0gVHJpYW5nbGUgZGlyZWN0aW9uLCBlaXRoZXIgYHRvcGAsIGByaWdodGAsIGBib3R0b21gIG9yIGBsZWZ0YFxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbY3VycmVudGNvbG9yXSAtIFRyaWFuZ2xlIGNvbG9yIFxuLy8vIEBwYXJhbSB7TGVuZ3RofSAkc2l6ZSBbMWVtXSAtIFRyaWFuZ2xlIHNpemVcbkBtaXhpbiBvLXRyaWFuZ2xlKCRkaXJlY3Rpb24sICRjb2xvcjogY3VycmVudGNvbG9yLCAkc2l6ZTogMWVtLCAkZmF0OiB0cnVlKSB7XG4gIEBpZiBub3QgaW5kZXgodG9wIHJpZ2h0IGJvdHRvbSBsZWZ0LCAkZGlyZWN0aW9uKSB7XG4gICAgQGVycm9yIFwiRGlyZWN0aW9uIG11c3QgYmUgZWl0aGVyIGB0b3BgLCBgcmlnaHRgLCBgYm90dG9tYCBvciBgbGVmdGAuXCI7XG4gIH1cblxuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBjb250ZW50OiAnJztcbiAgei1pbmRleDogMjtcblxuICBAaWYgKCRmYXQpIHtcbiAgICBib3JkZXItI3tvcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbil9OiAkc2l6ZSBzb2xpZCAkY29sb3I7XG4gIH0gQGVsc2Uge1xuICAgIGJvcmRlci0je29wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKX06ICgkc2l6ZSAqIDEuNSkgc29saWQgJGNvbG9yO1xuICB9XG5cbiAgJHBlcnBlbmRpY3VsYXItYm9yZGVyczogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gdG9wIG9yICRkaXJlY3Rpb24gPT0gYm90dG9tIHtcbiAgICBib3JkZXItbGVmdDogICAkcGVycGVuZGljdWxhci1ib3JkZXJzO1xuICAgIGJvcmRlci1yaWdodDogICRwZXJwZW5kaWN1bGFyLWJvcmRlcnM7XG4gIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCBvciAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgIGJvcmRlci1ib3R0b206ICRwZXJwZW5kaWN1bGFyLWJvcmRlcnM7XG4gICAgYm9yZGVyLXRvcDogICAgJHBlcnBlbmRpY3VsYXItYm9yZGVycztcbiAgfVxufVxuIiwiQG1peGluIG8taDEge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LS1oZWFkaW5nO1xuICBmb250LXNpemU6IDJyZW07XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtLXJlZ3VsYXI7XG4gIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDMpO1xuXG4gIEBpbmNsdWRlIGZyb20obSkge1xuICAgIGZvbnQtc2l6ZTogMi43NXJlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20obCkge1xuICAgIGZvbnQtc2l6ZTogMy41cmVtO1xuICB9XG59XG5cbkBtaXhpbiBvLWgyIHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS0taGVhZGluZztcbiAgZm9udC1zaXplOiAxLjc1cmVtO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1yZWd1bGFyO1xuICBsaW5lLWhlaWdodDogMS4wNTtcbiAgbWFyZ2luLWJvdHRvbTogc3BhY2luZygzKTtcblxuICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICBmb250LXNpemU6IDIuMTI1cmVtO1xuICB9XG5cbiAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgZm9udC1zaXplOiAyLjVyZW07XG4gIH1cbn1cblxuQG1peGluIG8taDMge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LS1oZWFkaW5nO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC0tbGlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDMpO1xuXG4gIEBpbmNsdWRlIGZyb20obSkge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20obCkge1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgfVxufVxuXG5AbWl4aW4gby1oNCB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktLWhlYWRpbmc7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC0tcmVndWxhcjtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gIG1hcmdpbi1ib3R0b206IHNwYWNpbmcoMyk7XG5cbiAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gIH1cbn1cblxuQG1peGluIG8taDUge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LS1oZWFkaW5nO1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1yZWd1bGFyO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgbWFyZ2luLWJvdHRvbTogc3BhY2luZygzKTtcblxuICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gIH1cbn1cblxuLy8gQFRPRE86IFVwZGF0ZVxuQG1peGluIG8taDYge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LS1oZWFkaW5nO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtLXJlZ3VsYXI7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA2MjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDMpO1xufVxuIiwiQG1peGluIG8tY29udGVudCB7XG4gIC8vIEBpbmNsdWRlIGNsZWFyZml4KCk7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6ICBhdXRvO1xuICBtYXgtd2lkdGg6ICRtYXgtd2lkdGgtLW5hcnJvdztcblxuICBwaWN0dXJlIHtcbiAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDMpO1xuICB9XG59XG5cbkBtaXhpbiBvLXdyYXBwZXIge1xuICAvLyBAaW5jbHVkZSBjbGVhcmZpeCgpO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiAgYXV0bztcbiAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuXG4gIEBpbmNsdWRlIGZyb20obCkge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aC0td2lkZTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20oeGwpIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGgtLXh3aWRlO1xuICB9XG59XG5cbkBtaXhpbiBvLXdyYXBwZXItLW5hcnJvdyB7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6ICBhdXRvO1xuICBtYXgtd2lkdGg6ICRtYXgtd2lkdGgtLXdpZGU7XG5cbiAgQGluY2x1ZGUgZnJvbSh4bCkge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aC0teHdpZGU7XG4gIH1cbn1cbiIsImJsb2NrcXVvdGUge1xuICBib3JkZXItbGVmdDogJGNvbG9yLS1ib3JkZXIgNXB4IHNvbGlkO1xuICBwYWRkaW5nLWxlZnQ6IHNwYWNpbmcoMyk7XG59XG4iLCJpbnB1dFt0eXBlPSd0ZWwnXSxcbmlucHV0W3R5cGU9J3RleHQnXSxcbmlucHV0W3R5cGU9J2VtYWlsJ10sXG5pbnB1dFt0eXBlPSdudW1iZXInXSxcbmlucHV0W3R5cGU9J3NlYXJjaCddLFxudGV4dGFyZWEsXG5zZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICAvLyBAVE9ETzogUmVwbGFjZSBjb2xvcnMgd2l0aCB2YXJpYWJsZXM/XG4gIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1ib3R0b206IHBhbGV0dGUoZ3JleSwgbGlnaHRlcikgNHB4IHNvbGlkO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogc3BhY2luZygxIDApO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzICR0cmFuc2l0aW9uO1xuICByZXNpemU6IG5vbmU7XG4gIG91dGxpbmU6IDA7XG4gIHdpZHRoOiAxMDAlO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogcGFsZXR0ZShicmFuZCk7XG4gIH1cblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHBhbGV0dGUoZ3JleSwgbGlnaHQpO1xuICB9XG59XG5cblxuLy8gc2VsZWN0IHtcbi8vICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4vLyAgICY6OmJlZm9yZSB7XG4vLyAgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtODtiYXNlNjQsUEhOMlp5QnBaRDBpYVdOdmJpMWphR1YyY205dUxYVndJaUJtYVd4c1BTSWpORUUwUVRSQklpQjJhV1YzUW05NFBTSXdJREFnTWpRZ01qUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SStEUW9nSUNBZ1BIQmhkR2dnWkQwaVRUY3VOREVnTVRVdU5ERk1NVElnTVRBdU9ETnNOQzQxT1NBMExqVTRUREU0SURFMGJDMDJMVFl0TmlBMmVpSXZQZzBLUEM5emRtYysnKTtcbi8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLyAgICAgdG9wOiA1MCU7XG4vLyAgICAgcmlnaHQ6IDFyZW07XG4vLyAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSkgc2NhbGVZKC0xKTtcbi8vICAgICBoZWlnaHQ6IDEuNXJlbTtcbi8vICAgICB3aWR0aDogIDEuNXJlbTtcbi8vICAgfVxuLy8gfVxuXG5pbnB1dFt0eXBlPSdjaGVja2JveCddIHtcbiAgQGluY2x1ZGUgY3VzdG9tLW9wdGlvbihjaGVja2JveCk7XG59XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICBAaW5jbHVkZSBjdXN0b20tb3B0aW9uKHJhZGlvKTtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjSU1BR0VTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIEZsdWlkIGltYWdlcyBmb3IgcmVzcG9uc2l2ZSBwdXJwb3Nlcy5cbiAqIDIuIE9mZnNldCBgYWx0YCB0ZXh0IGZyb20gc3Vycm91bmRpbmcgY29weS5cbiAqIDMuIFNldHRpbmcgYHZlcnRpY2FsLWFsaWduYCByZW1vdmVzIHRoZSB3aGl0ZXNwYWNlIHRoYXQgYXBwZWFycyB1bmRlciBgaW1nYFxuICogICAgZWxlbWVudHMgd2hlbiB0aGV5IGFyZSBkcm9wcGVkIGludG8gYSBwYWdlIGFzLWlzLiBTYWZlciBhbHRlcm5hdGl2ZSB0b1xuICogICAgdXNpbmcgYGRpc3BsYXk6IGJsb2NrO2AuXG4gKi9cblxucGljdHVyZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5pbWcge1xuICBoZWlnaHQ6IGF1dG87IC8qIFsxXSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIFsxXSAqL1xuICBmb250LXN0eWxlOiBpdGFsaWM7IC8qIFsyXSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiBbM10gKi9cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjUEFHRVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgbWluLWhlaWdodDogMTAwJTtcblxuICAqIHtcbiAgICAmLCAmOjpiZWZvcmUsICY6OmFmdGVyIHtcbiAgICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG5cbmJvZHkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5hcnRpY2xlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNUQUJMRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gRW5zdXJlIHRhYmxlcyBmaWxsIHVwIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGUuXG4gKi9cblxudGFibGUge1xuICB3aWR0aDogMTAwJTsgLyogWzFdICovXG59XG4iLCJodG1sIHtcbiAgY29sb3I6ICRjb2xvci0tdGV4dDtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC0tYmFzZTtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS0tYm9keTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1ib2R5O1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxuICBAaW5jbHVkZSBmcm9tKHhsKSB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgfVxufVxuXG5ib2R5IHtcbiAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgfVxufVxuXG4vLyBIZWFkaW5nc1xuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgdWwsIG9sLCBzcGFuIHtcbiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29tbW9uLWxpZ2F0dXJlcztcbiAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScsICdjbGlnJztcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbmgxIHsgQGluY2x1ZGUgby1oMTsgfVxuXG5oMiB7IEBpbmNsdWRlIG8taDI7IH1cblxuaDMgeyBAaW5jbHVkZSBvLWgzOyB9XG5cbmg0IHsgQGluY2x1ZGUgby1oNDsgfVxuXG5oNSB7IEBpbmNsdWRlIG8taDU7IH1cblxuaDYgeyBAaW5jbHVkZSBvLWg2OyB9XG5cbi8vIFBhcmFncmFwaFxucCB7XG4gIG1hcmdpbjogc3BhY2luZyg0IDApO1xufVxuXG5hIHtcbiAgY29sb3I6ICRjb2xvci0tbGluaztcbiAgLy8gZm9udC1zaXplOiAxcmVtO1xuICAvLyBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1ib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuNHMgZWFzZTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogZGFya2VuKCRjb2xvci0tbGluaywgNSUpO1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGNvbG9yOiBkYXJrZW4oJGNvbG9yLS1saW5rLCAxMCUpO1xuICB9XG59XG4iLCIuYWNjb3JkaW9uIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAmX19pdGVtIHtcbiAgICBAaW5jbHVkZSBvLWxpc3RfX2l0ZW07XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAgICZfX2hlYWRlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICZfX3RvZ2dsZSB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgd2lkdGg6ICAxLjVyZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBzcGFjaW5nKCk7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKC0xKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICR0cmFuc2l0aW9uIDAuM3M7XG5cbiAgICAgICAgLmFjY29yZGlvbl9faXRlbS5pcy1hY3RpdmUgJiB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6ICAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgICAmX19oZWFkaW5nIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBwYWRkaW5nOiBzcGFjaW5nKDEgMCAwKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG4gICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgIH1cblxuICAgICZfX2l0ZW0uaXMtYWN0aXZlICZfX2NvbnRlbnQge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG59XG4iLCIuYXJjaGl2ZSB7XG4gIC8vICZfX2hlYWRlciB7XG4gIC8vICAgcGFkZGluZzogc3BhY2luZyg1IDQgMCk7XG5cbiAgLy8gICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgLy8gICAgIHBhZGRpbmc6IHNwYWNpbmcoNSAwIDApO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gICZfX2ZlYXR1cmVkIHtcbiAgICBwYWRkaW5nLXRvcDogc3BhY2luZyg0KTtcblxuICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoMTApO1xuICAgIH1cbiAgfVxuXG4gICZfX2xpc3Qge1xuICAgIEBpbmNsdWRlIG8tbGlzdC0tdGVhc2VycztcbiAgICBwYWRkaW5nLXRvcDogc3BhY2luZyg0KTtcblxuICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoMTApO1xuICAgIH1cbiAgfVxufVxuXG4uaW5kZXgtZGF0YSB7XG4gIC5maWx0ZXIge1xuICAgIHBhZGRpbmctdG9wOiBzcGFjaW5nKDQpO1xuXG4gICAgQGluY2x1ZGUgYXQoeHMpIHtcbiAgICAgIG1hcmdpbjogMCBzcGFjaW5nKDQpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoNSk7XG4gICAgfVxuICB9XG59XG4iLCIuYmctaW1nIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAgICAwO1xuICByaWdodDogIDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogICAwO1xuXG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDA7XG59XG4iLCIuaW1hZ2UtYmFubmVyIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWluLWhlaWdodDogMjByZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIEBpbmNsdWRlIGZyb20ocykge1xuICAgIG1pbi1oZWlnaHQ6IDMwcmVtO1xuICB9XG5cbiAgQGluY2x1ZGUgZnJvbShtKSB7XG4gICAgbWluLWhlaWdodDogNDByZW07XG4gIH1cblxuICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICBtaW4taGVpZ2h0OiA1MHJlbTtcbiAgfVxuXG4gIHBpY3R1cmUsXG4gIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBwaWN0dXJlIHtcbiAgICBAaW5jbHVkZSBvLW92ZXJsYXk7XG4gIH1cblxuICAuYmFubmVyX19pbWFnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogIDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAubWVkaWEge1xuICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgLmNvbXBvbmVudF9faW5uZXIge1xuICAgIGNvbG9yOiBwYWxldHRlKHdoaXRlKTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6ICAxMDAlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCIuYnV0dG9uLFxuW3R5cGU9YnV0dG9uXSxcblt0eXBlPXJlc2V0XSxcblt0eXBlPXN1Ym1pdF0ge1xuICBAaW5jbHVkZSBvLWJ1dHRvbjtcblxuICAmLmJ1dHRvbi0tdGV4dCB7XG4gICAgQGluY2x1ZGUgby1idXR0b24tLXRleHQ7XG4gIH1cbn1cblxuLmxpbmtzIHtcbiAgbWFyZ2luLXRvcDogc3BhY2luZyg3KTtcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG59XG4iLCIuY29sdW1ucy1ibG9jayB7XG4gIC5jb2x1bW5zIHtcbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAvL2p1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIC8vbWFyZ2luOiAwIHNwYWNpbmcoLTEuNSk7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuXG4gICAgJi5sZWZ0LWJvcmRlcnMge1xuICAgICAgLmNvbHVtbiB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgcGFsZXR0ZShicmFuZCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY29sdW1uIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBmbGV4LWdyb3c6ICAgMDtcbiAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDQpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHNwYWNpbmcoOCk7XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgIG1hcmdpbi1ib3R0b206IHNwYWNpbmcoMyk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IHNwYWNpbmcoNCk7XG4gICAgICAvLyBwYWRkaW5nOiAwIHNwYWNpbmcoMS41KTtcbiAgICB9XG5cbiAgICAuaGVhZGluZyxcbiAgICAmX19udW1iZXIge1xuICAgICAgQGluY2x1ZGUgby1oNDtcbiAgICB9XG5cbiAgICAuaGVhZGluZyB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5oZWFkaW5nICsgcCB7XG4gICAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1jb2x1bW5zLXBlci1yb3c9XCJ0d29cIl0ge1xuICAgIC5jb2x1bW4ge1xuICAgICAgZmxleC1iYXNpczogY2FsYygje3BlcmNlbnRhZ2UoMS8yKX0gLSAje3NwYWNpbmcoNCAvIDIpfSk7XG5cbiAgICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgICAmOm50aC1vZi10eXBlKDJuKSB7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obCkge1xuICAgICAgICBmbGV4LWJhc2lzOiBjYWxjKCN7cGVyY2VudGFnZSgxLzIpfSAtICN7c3BhY2luZyg4IC8gMil9KTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBzcGFjaW5nKDgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1jb2x1bW5zLXBlci1yb3c9XCJ0aHJlZVwiXSB7XG4gICAgLmNvbHVtbiB7XG4gICAgICBmbGV4LWJhc2lzOiBjYWxjKCN7cGVyY2VudGFnZSgxLzMpfSAtICN7c3BhY2luZyg4IC8gMyl9KTtcblxuICAgICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICAgICY6bnRoLW9mLXR5cGUoM24pIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGNhbGMoI3twZXJjZW50YWdlKDEvMyl9IC0gI3tzcGFjaW5nKDI0IC8gMyl9KTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBzcGFjaW5nKDEyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmW2RhdGEtY29sdW1ucy1wZXItcm93PVwiZm91clwiXSB7XG4gICAgLmNvbHVtbiB7XG4gICAgICBmbGV4LWJhc2lzOiBjYWxjKCN7cGVyY2VudGFnZSgxLzIpfSAtICN7c3BhY2luZyg0IC8gMil9KTtcblxuICAgICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICAgICY6bnRoLW9mLXR5cGUoMm4pIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGNhbGMoI3twZXJjZW50YWdlKDEvNCl9IC0gI3tzcGFjaW5nKDQpfSk7XG5cbiAgICAgICAgJjpudGgtb2YtdHlwZSgybikge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogc3BhY2luZyg0KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bnRoLW9mLXR5cGUoNG4pIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLnUtdGV4dC1hbGlnbi0tY2VudGVyIHtcbiAgICAuY29sdW1ucyB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgLmNvbHVtbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLnUtdGV4dC1hbGlnbi0tcmlnaHQge1xuICAgIC5jb2x1bW5zIHtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cbiAgICAgIC5jb2x1bW4ge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5jb21wYW55IHtcbiAgJl9fbmFtZSB7XG4gICAgLy9mb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1tZWRpdW07XG4gICAgLy90ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIG1hcmdpbi1ib3R0b206IHNwYWNpbmcoMik7XG4gIH1cblxuICAmX190YWdsaW5lIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGgtLW5hcnJvdztcbiAgfVxufVxuIiwiLmNvbXBvbmVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuYmctaW1nIHtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gICZfX2lubmVyIHtcbiAgICBAaW5jbHVkZSBvLWJveDtcblxuICAgIC5zbGlkZXIgJiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAgMDtcbiAgICAgIHBhZGRpbmctbGVmdDogICAwO1xuICAgIH1cblxuICAgIC5nYWxsZXJ5ICYge1xuICAgICAgcGFkZGluZy1yaWdodDogIDA7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgIHBhZGRpbmctbGVmdDogICAwO1xuICAgIH1cbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aC0tbmFycm93O1xuXG4gICAgLy8gQGluY2x1ZGUgZnJvbShtKSB7XG4gICAgLy8gICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gICAgLy8gfVxuICB9XG5cbiAgJl9faW50cm8ge1xuICAgID4gKjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHNwYWNpbmcoNSk7XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDEwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBAVE9ETzogVXBkYXRlIGJnIGNvbG9ycyB0byBiZSB2YXJpYWJsZXNcbiAgJi51LWJhY2tncm91bmQtY29sb3ItLWxpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHdoaXRlKTtcbiAgfVxuXG4gICYudS1iYWNrZ3JvdW5kLWNvbG9yLS1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHdoaXRlLCBkYXJrKTtcbiAgfVxuXG4gICYudS1iYWNrZ3JvdW5kLWNvbG9yLS1saWdodC51LXBhZGRpbmctY29sbGFwc2UgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQudS1wYWRkaW5nLWNvbGxhcHNlICZfX2lubmVyLFxuICAmLnUtYmFja2dyb3VuZC1jb2xvci0tZGFyay51LXBhZGRpbmctY29sbGFwc2UgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tZGFyay51LXBhZGRpbmctY29sbGFwc2UgJl9faW5uZXIsXG4gICYudS1iYWNrZ3JvdW5kLWNvbG9yLS1saWdodC51LXBhZGRpbmctY29sbGFwc2UgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQudS1wYWRkaW5nLWNvbGxhcHNlIC5mZWF0dXJlZC1ibG9ja3NfX2lubmVyLFxuICAmLnUtYmFja2dyb3VuZC1jb2xvci0tZGFyay51LXBhZGRpbmctY29sbGFwc2UgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tZGFyay51LXBhZGRpbmctY29sbGFwc2UgLmZlYXR1cmVkLWJsb2Nrc19faW5uZXIsXG4gICYudS1iYWNrZ3JvdW5kLWNvbG9yLS1kYXJrLnUtcGFkZGluZy1jb2xsYXBzZSArIC5jb21wb25lbnQudS1iYWNrZ3JvdW5kLWNvbG9yLS1kYXJrLnUtcGFkZGluZy1jb2xsYXBzZSAuY29udGFjdC1pbmZvX19jb250ZW50LFxuICAmLnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQudS1wYWRkaW5nLWNvbGxhcHNlICsgLmNvbXBvbmVudC51LWJhY2tncm91bmQtY29sb3ItLWxpZ2h0LnUtcGFkZGluZy1jb2xsYXBzZSAuY29udGFjdC1pbmZvX19jb250ZW50IHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgfVxuXG4gICYudS1iYWNrZ3JvdW5kLWNvbG9yLS1saWdodC5pbWFnZS1iYW5uZXIgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQudS1wYWRkaW5nLWNvbGxhcHNlICZfX2lubmVyLFxuICAmLnUtYmFja2dyb3VuZC1jb2xvci0tZGFyay5pbWFnZS1iYW5uZXIgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tZGFyay51LXBhZGRpbmctY29sbGFwc2UgJl9faW5uZXIsXG4gICYuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQudS1wYWRkaW5nLWNvbGxhcHNlICsgLnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQudGlsZXMgJl9faW5uZXIsXG4gICYuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tZGFyay51LXBhZGRpbmctY29sbGFwc2UgKyAudS1iYWNrZ3JvdW5kLWNvbG9yLS1kYXJrLnRpbGVzICZfX2lubmVyIHtcbiAgICBAaW5jbHVkZSBhdCh4cykge1xuICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxuICB9XG5cbiAgJi5jb2x1bW5zLWJsb2NrLnUtdGV4dC1hbGlnbi0tY2VudGVyLFxuICAmLmZlYXR1cmVkLWJsb2Nrcy51LXRleHQtYWxpZ24tLWNlbnRlcixcbiAgJi5mZWF0dXJlZC1wb3N0cy51LXRleHQtYWxpZ24tLWNlbnRlcixcbiAgJi5nYWxsZXJ5LnUtdGV4dC1hbGlnbi0tY2VudGVyLFxuICAmLnZpZGVvLnUtdGV4dC1hbGlnbi0tY2VudGVyLFxuICAmLnRhYmxlLnUtdGV4dC1hbGlnbi0tY2VudGVyLFxuICAmLnRlYW0udS10ZXh0LWFsaWduLS1jZW50ZXIsXG4gICYuc2xpZGVyLnUtdGV4dC1hbGlnbi0tY2VudGVyIHtcbiAgICAuY29tcG9uZW50X19jb250ZW50IHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAmLmNvbHVtbnMtYmxvY2sudS10ZXh0LWFsaWduLS1sZWZ0LFxuICAmLmZlYXR1cmVkLWJsb2Nrcy51LXRleHQtYWxpZ24tLWxlZnQsXG4gICYuZmVhdHVyZWQtcG9zdHMudS10ZXh0LWFsaWduLS1sZWZ0LFxuICAmLmdhbGxlcnkudS10ZXh0LWFsaWduLS1sZWZ0LFxuICAmLnZpZGVvLnUtdGV4dC1hbGlnbi0tbGVmdCxcbiAgJi50YWJsZS51LXRleHQtYWxpZ24tLWxlZnQsXG4gICYudGVhbS51LXRleHQtYWxpZ24tLWxlZnQsXG4gICYuc2xpZGVyLnUtdGV4dC1hbGlnbi0tbGVmdCB7XG4gICAgLmNvbXBvbmVudF9fY29udGVudCB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAmLmNvbHVtbnMtYmxvY2sudS10ZXh0LWFsaWduLS1yaWdodCxcbiAgJi5mZWF0dXJlZC1ibG9ja3MudS10ZXh0LWFsaWduLS1yaWdodCxcbiAgJi5mZWF0dXJlZC1wb3N0cy51LXRleHQtYWxpZ24tLXJpZ2h0LFxuICAmLmdhbGxlcnkudS10ZXh0LWFsaWduLS1yaWdodCxcbiAgJi52aWRlby51LXRleHQtYWxpZ24tLXJpZ2h0LFxuICAmLnRhYmxlLnUtdGV4dC1hbGlnbi0tcmlnaHQsXG4gICYudGVhbS51LXRleHQtYWxpZ24tLXJpZ2h0LFxuICAmLnNsaWRlci51LXRleHQtYWxpZ24tLXJpZ2h0IHtcbiAgICAuY29tcG9uZW50X19jb250ZW50IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gICYuaGFzLWJhY2tncm91bmQtaW1hZ2Uge1xuICAgICZfX2lubmVyIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG5cbiAgJi51LWJhY2tncm91bmQtY29sb3ItLWxpZ2h0ICsgLmNvbXBvbmVudC5nYWxsZXJ5LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQsXG4gICYudS1iYWNrZ3JvdW5kLWNvbG9yLS1kYXJrICsgLmNvbXBvbmVudC5nYWxsZXJ5LnUtYmFja2dyb3VuZC1jb2xvci0tZGFyayxcbiAgJi51LWJhY2tncm91bmQtY29sb3ItLWxpZ2h0ICsgLmNvbXBvbmVudC5zbGlkZXIudS1iYWNrZ3JvdW5kLWNvbG9yLS1saWdodCxcbiAgJi51LWJhY2tncm91bmQtY29sb3ItLWRhcmsgKyAuY29tcG9uZW50LnNsaWRlci51LWJhY2tncm91bmQtY29sb3ItLWRhcmsge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICB9XG5cbiAgJi5nYWxsZXJ5LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQsXG4gICYuZ2FsbGVyeS51LWJhY2tncm91bmQtY29sb3ItLWRhcmsgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tZGFyayB7XG4gICAgbWFyZ2luLXRvcDogLTAuNXJlbTtcblxuICAgIEBpbmNsdWRlIGZyb20obCkge1xuICAgICAgbWFyZ2luLXRvcDogLTAuNzVyZW07XG4gICAgfVxuICB9XG59XG5cbi51LWJhY2tncm91bmQtY29sb3ItLWxpZ2h0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZSh3aGl0ZSk7XG59XG5cbi51LWJhY2tncm91bmQtY29sb3ItLWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHdoaXRlLCBkYXJrKTtcbn1cblxuIiwiLmNvbnRhY3Qge1xuICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gICZfX2NvbHVtbiB7XG4gICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICBmbGV4OiAwIDAgNTAlO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgICBmbGV4OiAwIDAgNTAlO1xuICAgIH1cbiAgfVxuXG4gICZfX3JvdyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgfVxuXG4gICZfX2FkZHJlc3MsXG4gICZfX2hvdXJzLFxuICAmX19waG9uZSxcbiAgJl9fZW1haWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAuaWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICB9XG4gIH1cbn1cblxuLmNvbnRhY3QtaW5mbyB7XG4gICZfX3dyYXBwZXIge1xuICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBwYWRkaW5nOiBzcGFjaW5nKDEyIDQpO1xuXG4gICAgQGluY2x1ZGUgZnJvbShtKSB7XG4gICAgICBmbGV4OiAxIDAgNTAlO1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoOCk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogc3BhY2luZyg4KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgIHBhZGRpbmc6IHNwYWNpbmcoMjUgMTApO1xuICAgIH1cblxuICAgIC5nZm9ybV93cmFwcGVyIHtcbiAgICAgIG1hcmdpbjogNHJlbSAwO1xuICAgIH1cblxuICAgIC5nZm9ybV9maWVsZHMge1xuICAgICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIH1cblxuICAgICAgLmdmaWVsZCB7XG4gICAgICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5nZl9sZWZ0X2hhbGYsIC5nZl9yaWdodF9oYWxmIHtcbiAgICAgICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICAgICAgZmxleDogMCAwIDQ4JTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0ZXh0YXJlYSB7XG4gICAgICAgIGhlaWdodDogOHJlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19tYXAge1xuICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgZmxleDogMCAxIDUwJTtcbiAgICB9XG5cbiAgICAubWFwX19jYW52YXMge1xuICAgICAgaGVpZ2h0OiA1MDBweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuZ20tc3R5bGUtaXcge1xuICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5ob21lIC5oZXJvW2RhdGEtZmVhdHVyZWQtYmFyPVwiYm90dG9tXCJdLFxuLmhvbWUgLmhlcm9bZGF0YS1mZWF0dXJlZC1iYXI9XCJzaWRlXCJdIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0aGVpZ2h0OiBjYWxjKDEwMHZoIC0gI3skaGVhZGVyLWhlaWdodC0tbW9iaWxlfSk7XG5cdG1pbi1oZWlnaHQ6IDQwcmVtO1xuXG5cdEBpbmNsdWRlIGZyb20obSkge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtICN7JGhlYWRlci1oZWlnaHR9KTtcbiAgICBtaW4taGVpZ2h0OiA0NXJlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20obCkge1xuICAgIG1pbi1oZWlnaHQ6IDU1cmVtO1xuICB9XG5cblx0Lmhlcm9fX3dyYXAge1xuXHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdGhlaWdodDogYXV0bztcblx0XHRtaW4taGVpZ2h0OiAyNXJlbTtcblxuXHQgIEBpbmNsdWRlIGZyb20obSkge1xuXHQgICAgbWluLWhlaWdodDogMzByZW07XG5cdCAgfVxuXG5cdCAgQGluY2x1ZGUgZnJvbShsKSB7XG5cdCAgICBtaW4taGVpZ2h0OiA0MHJlbTtcblx0ICB9XG5cdH1cblxuXHQuZmVhdHVyZWQtYmFyIHtcblx0ICBmbGV4OiAwIDAgYXV0bztcblx0ICBkaXNwbGF5OiBmbGV4O1xuXHQgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuXHQgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdCAgcGFkZGluZzogMS41cmVtIDJyZW07XG5cblx0ICBAaW5jbHVkZSBmcm9tKG0pIHtcblx0ICBcdHBhZGRpbmc6IDEuNXJlbSAycmVtO1xuICAgIH1cblxuXHQgIC5jb2wgKyAuY29sIHtcblx0ICBcdG1hcmdpbi1sZWZ0OiAxcmVtO1xuXHQgIH1cblxuXHQgIC5mZWF0dXJlZC1jb250ZW50LTMge1xuXHQgIFx0ZGlzcGxheTogbm9uZTtcblxuXHQgIFx0QGluY2x1ZGUgZnJvbShzKSB7XG5cdCAgXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHQgIFx0fVxuXHQgIH1cblxuXHQgICZfX3Bvc3Qge1xuXHQgIFx0ZGlzcGxheTogbm9uZTtcblxuICBcdFx0QGluY2x1ZGUgZnJvbShzKSB7XG4gIFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuICBcdFx0XHRmbGV4OiAwIDAgNDAlO1xuICBcdFx0fVxuXG4gIFx0XHRAaW5jbHVkZSBmcm9tKG0pIHtcbiAgXHRcdFx0ZmxleDogMCAwIDUwJTtcbiAgXHRcdH1cblxuXHQgIFx0LnBvc3QtLXRlYXNlciB7XG5cdFx0ICBcdG1hcmdpbi1yaWdodDogMDtcblx0XHQgIFx0d2lkdGg6IDEwMCU7XG5cdFx0ICBcdGZsZXgtYmFzaXM6IDEwMCU7XG5cblx0XHQgIFx0QGluY2x1ZGUgZnJvbShzKSB7XG5cdCAgXHRcdFx0ZGlzcGxheTogZmxleDtcblx0ICBcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHQgIFx0XHR9XG5cblx0XHQgIFx0Lm1ldGEge1xuXHRcdCAgXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0ICBcdH1cblxuXHRcdCAgXHQucG9zdF9fY29udGVudCB7XG5cdFx0ICBcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0ICBcdFx0bWFyZ2luLXJpZ2h0OiAxcmVtO1xuXHRcdCAgXHR9XG5cblx0XHQgIFx0Lm1lZGlhLWNvbnRhaW5lciB7XG5cdFx0ICBcdFx0b3JkZXI6IDI7XG5cdFx0ICBcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdCAgXHRcdHdpZHRoOiAxMDAlO1xuXHRcdCAgXHRcdHBhZGRpbmctYm90dG9tOiAycmVtO1xuXHRcdCAgXHRcdGRpc3BsYXk6IG5vbmU7XG5cblx0XHQgIFx0XHRAaW5jbHVkZSBmcm9tKG0pIHtcblx0XHQgIFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdCAgXHRcdH1cblxuXHRcdCAgXHRcdCY6OmJlZm9yZSxcblx0XHQgIFx0XHQmOjphZnRlciB7XG5cdFx0ICBcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0ICBcdFx0XHRib3R0b206IDA7XG5cdFx0ICBcdFx0XHRsZWZ0OiAwO1xuXHRcdCAgXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHQgIFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdCAgXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2VjZWNlYztcblx0XHQgIFx0XHRcdGhlaWdodDogNXB4O1xuXHRcdCAgXHRcdH1cblxuXHRcdCAgXHRcdCY6OmFmdGVyIHtcblx0XHQgIFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuXHRcdCAgXHRcdFx0d2lkdGg6IDgwJTtcblx0XHQgIFx0XHR9XG5cdFx0ICBcdH1cblxuXHRcdCAgXHQubWVkaWEge1xuXHRcdCAgXHRcdGJveC1zaGFkb3c6IDAgMCAyMHB4ICNjZWNlY2U7XG5cdFx0ICBcdH1cblxuXHRcdCAgXHQubWVkaWFbZGF0YS1yYXRpbz1cIjE6MVwiXSB7XG5cdFx0ICBcdFx0cGFkZGluZy1ib3R0b206IDY1JTtcblx0XHQgIFx0fVxuXHRcdCAgfVxuXHRcdH1cblxuXHQgICZfX2NvbnRlbnQge1xuXHQgIFx0aDIge1xuXHQgIFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHQgIFx0XHRmb250LXNpemU6IDAuNzVyZW07XG5cdCAgXHRcdG9wYWNpdHk6IDAuNzU7XG5cdCAgXHR9XG5cblx0ICBcdGgzIHtcblx0ICBcdFx0QGluY2x1ZGUgby1oNTtcblx0ICBcdH1cblxuXHQgIFx0cCB7XG5cdCAgXHRcdGRpc3BsYXk6IG5vbmU7XG5cblx0ICBcdFx0QGluY2x1ZGUgZnJvbShsKSB7XG5cdCAgXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdCAgXHRcdH1cblx0ICBcdH1cblx0ICB9XG5cdH1cbn1cblxuLmhvbWUgLmhlcm9bZGF0YS1mZWF0dXJlZC1iYXI9XCJib3R0b21cIl0ge1xuXHRAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICBtaW4taGVpZ2h0OiA2NXJlbTtcbiAgfVxuXG4gIC5mZWF0dXJlZC1iYXIge1xuICBcdEBpbmNsdWRlIGZyb20obCkge1xuXHQgIFx0cGFkZGluZzogMnJlbSA1cmVtO1xuXHQgIH1cblxuICBcdC5jb2wgKyAuY29sIHtcbiAgXHRcdG1hcmdpbi1sZWZ0OiAycmVtO1xuICBcdH1cblxuICBcdCZfX3Bvc3Qge1xuXHQgIFx0QGluY2x1ZGUgZnJvbShsKSB7XG5cdCAgXHRcdG1heC13aWR0aDogNzUwcHg7XG5cdCAgXHR9XG5cblx0ICBcdEBpbmNsdWRlIGZyb20oeGwpIHtcblx0ICBcdFx0bWF4LXdpZHRoOiA4MDBweDtcblx0ICBcdH1cblxuXHQgICAgLnBvc3QtLXRlYXNlciB7XG5cdCAgXHRcdC5wb3N0X19jb250ZW50IHtcblx0ICBcdFx0XHRAaW5jbHVkZSBmcm9tKHhsKSB7XG5cdCAgXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDNyZW07XG5cdCAgXHRcdFx0fVxuXHQgIFx0XHR9XG5cdCAgICB9XG5cdCAgfVxuICB9XG59XG5cbi5oZXJvLmhvbWVbZGF0YS1mZWF0dXJlZC1iYXI9XCJzaWRlXCJdIHtcblx0QGluY2x1ZGUgZnJvbShsKSB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblxuXHRcdC5mZWF0dXJlZC1iYXIge1xuXHQgIFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0ICBcdG1heC13aWR0aDogMjRyZW07XG5cdCAgXHRoZWlnaHQ6IDEwMCU7XG5cdCAgXHRwYWRkaW5nOiAycmVtIDRyZW07XG5cblx0ICBcdCZfX2NvbnRlbnQge1xuXHQgIFx0XHR3aWR0aDogMTAwJTtcblx0ICBcdH1cblxuXHQgIFx0LmNvbCArIC5jb2wge1xuXHRcdCAgXHRtYXJnaW4tbGVmdDogMDtcblx0XHQgIFx0bWFyZ2luLXRvcDogMnJlbTtcblx0XHQgIH1cblx0XHR9XG5cblx0XHQucG9zdC0tdGVhc2VyIHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRmbGV4LWJhc2lzOiAxMDAlO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXG5cdFx0XHQubWVkaWEge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAzcmVtO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4uaG9tZSAuaGVyb1tkYXRhLW5hdi1idXR0b25zPVwidHJ1ZVwiXSB7XG5cdC5mZWF0dXJlZC1iYXIge1xuXHRcdG1hcmdpbi1ib3R0b206IDUwcHg7XG5cblx0XHRAaW5jbHVkZSBmcm9tKG0pIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG59XG4iLCIuZmVhdHVyZWQtYmxvY2tzIHtcbiAgLmJsb2NrIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIC5ibG9ja19faW1hZ2Uge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIEBpbmNsdWRlIG8tb3ZlcmxheTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5ibG9ja19fY29udGVudCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgcGFkZGluZzogMnJlbSAzcmVtO1xuICAgICAgICBjb2xvcjogcGFsZXR0ZSh3aGl0ZSk7XG4gICAgICAgIHotaW5kZXg6IDI7XG5cbiAgICAgICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICAgICAgcGFkZGluZzogMy41cmVtIDZyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgICAgICBwYWRkaW5nOiAycmVtIDNyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgICAgICBwYWRkaW5nOiAyLjc1cmVtIDQuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGZyb20oeGwpIHtcbiAgICAgICAgICBwYWRkaW5nOiAzLjVyZW0gNnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICBAaW5jbHVkZSBvLWgzO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICBoMiArIHAge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDAuNzVyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZmVhdHVyZWQtYmxvY2tzLXNsaWRlci1wYWdpbmF0aW9uIHtcbiAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJl9fbGlzdCB7XG4gICAgbWFyZ2luLWxlZnQ6IHNwYWNpbmcoLTQpO1xuICAgIG1hcmdpbi1yaWdodDogc3BhY2luZygtNCk7XG5cbiAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBzcGFjaW5nKC0xMik7XG4gICAgICBtYXJnaW4tcmlnaHQ6IHNwYWNpbmcoLTEyKTtcbiAgICB9XG4gIH1cblxuICAuY29tcG9uZW50X19pbm5lciB7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cbn1cblxuLmZlYXR1cmVkLWJsb2Nrcy5jb21wb25lbnQudS1iYWNrZ3JvdW5kLWNvbG9yLS1saWdodC51LXBhZGRpbmctY29sbGFwc2UgKyAuY29tcG9uZW50LnUtYmFja2dyb3VuZC1jb2xvci0tbGlnaHQudS1wYWRkaW5nLWNvbGxhcHNlIHtcbiAgLmNvbXBvbmVudF9faW5uZXIge1xuICAgIHBhZGRpbmctdG9wOiBzcGFjaW5nKDEyKTtcblxuICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoMTgpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZyb20obCkge1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoMjUpO1xuICAgIH1cbiAgfVxufVxuXG5cbi5mZWF0dXJlZC1ibG9ja3NbZGF0YS1ibG9ja3M9XCIyXCJdIHtcbiAgLmJsb2NrIHtcbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgfVxuICB9XG59XG5cbi5mZWF0dXJlZC1ibG9ja3NbZGF0YS1ibG9ja3M9XCIzXCJdIHtcbiAgLmJsb2NrIHtcbiAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgIGZsZXg6IDAgMCAzMy4zMzMlO1xuICAgIH1cbiAgfVxufVxuXG4uZmVhdHVyZWQtYmxvY2tzW2RhdGEtYmxvY2tzPVwiNFwiXSB7XG4gIC5ibG9jayB7XG4gICAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgICBmbGV4OiAwIDAgMjUlO1xuICAgIH1cbiAgfVxufVxuIiwiLmZpbHRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuXG4gICZfX29wdGlvbnMge1xuICAgIEBpbmNsdWRlIG8tbGlzdC0taW5saW5lLWZsZXg7XG4gICAgYm9yZGVyLWxlZnQ6ICRjb2xvci0tdGV4dCAycHggc29saWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICAgJl9fb3B0aW9uIHtcbiAgICAgIGNvbG9yOiBwYWxldHRlKGdyZXksIGxpZ2h0KTtcbiAgICAgIHBhZGRpbmc6IHNwYWNpbmcoMCAyKTtcblxuICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuICAgICAgfVxuICAgIH1cbn1cblxuLnByaW9yaXR5LW5hdiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLy8gPiB1bCB7XG4gIC8vICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIC8vICAgPiBsaSB7XG4gIC8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgJl9fd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgJl9fZHJvcGRvd24ge1xuICAgIEBpbmNsdWRlIG8tbGlzdC0tYmFyZTtcbiAgICBiYWNrZ3JvdW5kOiBwYWxldHRlKHdoaXRlKTtcbiAgICBib3gtc2hhZG93OiAwIDAuMjVyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgIHBhZGRpbmc6IHNwYWNpbmcoMiAwKTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIHJpZ2h0OiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxcmVtKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZSwgdmlzaWJpbGl0eSAwLjVzIGVhc2U7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHdoaXRlKTtcbiAgICAgIGJveC1zaGFkb3c6IDAgLTAuMTI1cmVtIDAuMTI1cmVtIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAxMDAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgJHRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgJi5zaG93IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDApO1xuICAgICAgfVxuICAgIH1cblxuICAgICYtdG9nZ2xlIHtcbiAgICAgIEBpbmNsdWRlIG8tYnV0dG9uLS10ZXh0O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwYWRkaW5nOiAwIDAuMzc1cmVtO1xuICAgICAgei1pbmRleDogMjtcblxuICAgICAgc3ZnIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGZpbGwgMC40cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBmaWxsOiAkY29sb3ItLWxpbms7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLWhhcy1kcm9wZG93biAucHJpb3JpdHktbmF2X19kcm9wZG93bi10b2dnbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICYuaXMtb3BlbiAucHJpb3JpdHktbmF2X19kcm9wZG93bi10b2dnbGUge1xuICAgIHN2ZyB7XG4gICAgICBmaWxsOiAkY29sb3ItLWxpbms7XG4gICAgfVxuICB9XG5cbiAgJi1pcy12aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgJi1pcy1oaWRkZW4ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxufVxuIiwiLy9cbi8vIEZseW91dCBPdmVybGF5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4ub3ZlcmxheS1zaG93IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShibGFjayk7XG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAgMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogIDEwMCU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgJHRyYW5zaXRpb24tLWVhc2Utb3V0LWN1YmljO1xuICB6LWluZGV4OiAxMDAwO1xuXG4gIC5vdmVybGF5LXZpc2libGUgJixcbiAgJi5zaG93IHtcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgfVxufVxuXG5cbi8vXG4vLyBGbHlvdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi5mbHlvdXQge1xuICAkbDogJjtcblxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAxJSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICAvLyBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjb2xvci0tYm9yZGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDsgLy8gaGFzIHRvIGJlIHNjcm9sbCwgbm90IGF1dG9cbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6ICAgMDtcbiAgcmlnaHQ6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzICR0cmFuc2l0aW9uLS1lYXNlLW91dC1jdWJpYztcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogIDEwMCU7XG4gIHotaW5kZXg6IDEzMDA7XG5cbiAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoLS1uYXJyb3c7XG4gIH1cblxuICAvLyBAaW5jbHVkZSBmcm9tKHhsKSB7XG4gIC8vICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICAvLyB9XG5cbiAgJi5zaG93IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApIHNjYWxlKDEpO1xuICB9XG5cbiAgLm5vLWNzc3RyYW5zZm9ybXMgJiB7XG4gICAgcmlnaHQ6IC0yMDAlO1xuXG4gICAgJi5zaG93IHtcbiAgICAgIHJpZ2h0OiAwJTtcbiAgICB9XG4gIH1cblxuICAmX19pbm5lciB7XG4gICAgcGFkZGluZzogc3BhY2luZyg1KTtcbiAgfVxuXG4gICZfX2Nsb3NlIHtcbiAgICBwYWRkaW5nOiBzcGFjaW5nKDQpO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICB3aWR0aDogIDEuMjVyZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogICAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKGJsYWNrKTtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC40cyBlYXNlO1xuICAgICAgaGVpZ2h0OiAwLjEyNXJlbTtcbiAgICAgIHdpZHRoOiAgMS4yNXJlbTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogIDUwJTtcbiAgICAgIGxlZnQ6IDUwJTtcblxuICAgICAgLmZseW91dC0tdGVhbSAmIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZSh3aGl0ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSg0NWRlZyk7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAmOjpiZWZvcmUsXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uZmx5b3V0LWRhdGEge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIC5mbHlvdXQgJiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi5mb290ZXIge1xuICBAaW5jbHVkZSBvLWJveDtcbiAgcGFkZGluZy10b3A6IHNwYWNpbmcoNSk7XG4gIHBhZGRpbmctYm90dG9tOiBzcGFjaW5nKDUpO1xuICBmb250LXNpemU6IDAuNzVyZW07XG5cbiAgQGluY2x1ZGUgYXQgKHhzKSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogc3BhY2luZyg4KTtcbiAgICBwYWRkaW5nLWJvdHRvbTogc3BhY2luZyg4KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20obCkge1xuICAgIHBhZGRpbmctdG9wOiBzcGFjaW5nKDEyKTtcbiAgICBwYWRkaW5nLWJvdHRvbTogc3BhY2luZygxMik7XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1ib2R5O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGNvbG9yLS1saW5rO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIGNvbG9yOiBkYXJrZW4oJGNvbG9yLS1saW5rLCAxMCUpO1xuICAgIH1cbiAgfVxuXG4gIC5jb21wYW55IHtcbiAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDUpO1xuXG4gICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5jb250YWN0IHtcbiAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDUpO1xuXG4gICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIHNwYW4ge1xuICAgIEBpbmNsdWRlIGF0KHhzKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAuY29weXJpZ2h0LFxuICAucHJpdmFjeS1wb2xpY3kge1xuICAgIG1hcmdpbi1ib3R0b206IHNwYWNpbmcoKTtcbiAgfVxuXG4gIC5kaXZpZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwIDAuNXJlbTtcblxuICAgIEBpbmNsdWRlIGF0ICh4cykge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5nZm9ybSB7XG4gICZfZmllbGRzIHtcbiAgICBAaW5jbHVkZSBvLWxpc3QtLWJhcmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICB9XG59XG5cbi5nZmllbGQge1xuICBmbGV4LWJhc2lzOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDMpO1xuXG4gICZfcmFkaW8sXG4gICZfY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIG8tbGlzdC0tYmFyZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICBsaSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgID4gKiB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX2xhYmVsIHtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1ib2xkO1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAuc2hvdy1sYWJlbCAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICYuaGFsZi1jb2wge1xuICAgIGZsZXgtYmFzaXM6IGNhbGMoNTAlIC0gI3tzcGFjaW5nKDEuNSl9KTtcbiAgICBtYXJnaW4tcmlnaHQ6IHNwYWNpbmcoMyk7XG5cbiAgICArIC5nZmllbGQuaGFsZi1jb2wge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cbiAgfVxufVxuXG4uZ2lucHV0X2NvbXBsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gID4gc3BhbiB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IHNwYWNpbmcoMyk7XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICB9XG4gIH1cbn1cblxuLnNzLW1haW4ge1xuICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuICBmb250LXNpemU6IDFyZW07XG5cbiAgLnNzLXNpbmdsZS1zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZSh3aGl0ZSk7XG4gICAgYm9yZGVyOiBwYWxldHRlKGdyZXksIGxpZ2h0ZXIpIDJweCBzb2xpZDtcbiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgIHBhZGRpbmc6IHNwYWNpbmcoMSAyIDEgMyk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuM3MgJHRyYW5zaXRpb247XG4gICAgaGVpZ2h0OiAyLjc1cmVtO1xuXG4gICAgLnBsYWNlaG9sZGVyIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxuXG4gICAgLnNzLWFycm93IHtcbiAgICAgIHNwYW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHBhbGV0dGUoZ3JleSwgbGlnaHQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyAkdHJhbnNpdGlvbjtcblxuICAgICAgICAmLmFycm93LXVwIHtcbiAgICAgICAgICBtYXJnaW46IDRweCAwIDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZVkoLTEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICYuc3Mtb3Blbi1iZWxvdyB7XG4gICAgICBib3JkZXItY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuXG4gICAgICAuc3MtYXJyb3cge1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNzLWNvbnRlbnQge1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4wNzUpIDAgMCAxLjVyZW07XG4gICAgbWFyZ2luOiBzcGFjaW5nKDIgMCAwKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gQFRPRE86IEZpbmlzaFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGJhY2tncm91bmQ6IHJlZDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMTAwJTtcbiAgICAgIHJpZ2h0OiAxcmVtO1xuICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgd2lkdGg6IDJyZW07XG4gICAgfVxuXG4gICAgLnNzLWxpc3Qge1xuICAgICAgLnNzLW9wdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IHNwYWNpbmcoMSAzKTtcblxuICAgICAgICAmOm5vdCguc3MtZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHdoaXRlLCBkYXJrKTtcbiAgICAgICAgICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuZ2FsbGVyeSB7XG4gICRsYXlvdXRzOiA2LCA4LCAxMCwgMTI7XG4gICRjb2x1bW4td2lkdGhzOiAoXG4gICAgMjogY2FsYyg1MCUgLSAje3NwYWNpbmcoMC41KX0pLFxuICAgIDM6IGNhbGMoI3twZXJjZW50YWdlKDEvMyl9IC0gKCN7c3BhY2luZyg0KX0gLyAzKSksXG4gICAgNDogY2FsYygyNSUgLSAoI3tzcGFjaW5nKDYpIC8gNH0pKSxcbiAgICA1OiBjYWxjKDIwJSAtICgje3NwYWNpbmcoOCl9IC8gNSkpLFxuICAgIDY6IGNhbGMoI3twZXJjZW50YWdlKDEvNil9IC0gKCN7c3BhY2luZygxMCl9IC8gNikpXG4gICk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcblxuICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcbiAgfVxuXG4gICZfX2lubmVyIHtcbiAgICBkaXNwbGF5OiBncmlkOyAvKiAoMSkgKi9cbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpOyAvKiAoMikgKi9cbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgyLCAxZnIpOyAvKiAoMykgKi9cbiAgICAvL2dyaWQtZ2FwOiAxcmVtOyAvKiAoNCkgKi9cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IC8qICg1KSAqL1xuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICAgIG1hcmdpbi1yaWdodDogMTZweDtcblxuICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTsgLyogKDIpICovXG4gICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgzLCAxZnIpOyAvKiAoMykgKi9cbiAgICAgIG1hcmdpbi1sZWZ0OiAtOHB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTsgLyogKDIpICovXG4gICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgzLCAxZnIpOyAvKiAoMykgKi9cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMTJweDtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEycHg7XG4gICAgfVxuXG4gICAgW2RhdGEtbWF4PVwiNVwiXSAmIHtcbiAgICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOyAvKiAoMikgKi9cbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMywgMWZyKTsgLyogKDMpICovXG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpOyAvKiAoMikgKi9cbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMiwgMWZyKTsgLyogKDMpICovXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgICAmX19pbWFnZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBncmlkLWNvbHVtbjogMSAvIDM7IC8qICg2KSAqL1xuICAgICAgICBncmlkLXJvdzogIDEgLyAzOyAvKiAoNykgKi9cblxuICAgICAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIDM7IC8qICg2KSAqL1xuICAgICAgICAgIGdyaWQtcm93OiAgMSAvIDM7IC8qICg3KSAqL1xuICAgICAgICB9XG4gICAgICB9XG5cblxuICAgICAgQGVhY2ggJG1heCBpbiAkbGF5b3V0cyB7XG4gICAgICAgIC5nYWxsZXJ5W2RhdGEtdmlzaWJsZT1cIiN7JG1heH1cIl0gJiB7XG4gICAgICAgICAgJjpudGgtY2hpbGQobiArICN7JG1heCArIDF9KSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubWVkaWFbZGF0YS1yYXRpbz1cIjE6MVwiXSB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNnB4KTtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxNnB4KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGMoMTAwJSAtIDE2cHgpO1xuICAgICAgICBtYXJnaW46IDhweDtcblxuICAgICAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjRweCk7XG4gICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAyNHB4KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygxMDAlIC0gMjRweCk7XG4gICAgICAgICAgbWFyZ2luOiAxMnB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYtLWhpZGRlbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC8qIC0tY29sdW1uczogMjtcbiAgICAgIGZsZXgtYmFzaXM6IG1hcC1nZXQoJGNvbHVtbi13aWR0aHMsIDIpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2luZygpO1xuXG4gICAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgICAgLS1jb2x1bW5zOiAzO1xuICAgICAgICBmbGV4LWJhc2lzOiBtYXAtZ2V0KCRjb2x1bW4td2lkdGhzLCAzKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2luZygyKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZnJvbShtKSB7XG4gICAgICAgIC8qIC5nYWxsZXJ5W2RhdGEtbWF4PVwiNVwiXSAmLFxuICAgICAgICAuZ2FsbGVyeVtkYXRhLW1heD1cIjlcIl0gJiB7XG4gICAgICAgICAgLS1jb2x1bW5zOiA0O1xuICAgICAgICAgIGZsZXgtYmFzaXM6IG1hcC1nZXQoJGNvbHVtbi13aWR0aHMsIDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZyb20oeGwpIHtcbiAgICAgICAgLmdhbGxlcnlbZGF0YS1tYXg9XCIxMFwiXSAmIHtcbiAgICAgICAgICAtLWNvbHVtbnM6IDU7XG4gICAgICAgICAgZmxleC1iYXNpczogbWFwLWdldCgkY29sdW1uLXdpZHRocywgNSk7XG4gICAgICAgIH1cblxuICAgICAgICAuZ2FsbGVyeVtkYXRhLW1heD1cIjEyXCJdICYge1xuICAgICAgICAgIC0tY29sdW1uczogNjtcbiAgICAgICAgICBmbGV4LWJhc2lzOiBtYXAtZ2V0KCRjb2x1bW4td2lkdGhzLCA2KTtcbiAgICAgICAgfVxuICAgICAgfSAqL1xuICAgIH1cblxuICAmX19tb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1ib2xkO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IHNwYWNpbmcoKTtcbiAgICBoZWlnaHQ6IDA7XG5cbiAgICAvKiBwYWRkaW5nLWJvdHRvbTogbWFwLWdldCgkY29sdW1uLXdpZHRocywgMik7XG4gICAgd2lkdGg6ICAgICAgICAgIG1hcC1nZXQoJGNvbHVtbi13aWR0aHMsIDIpO1xuXG4gICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICBib3R0b206IHNwYWNpbmcoMik7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogbWFwLWdldCgkY29sdW1uLXdpZHRocywgMyk7XG4gICAgICB3aWR0aDogICAgICAgICAgbWFwLWdldCgkY29sdW1uLXdpZHRocywgMyk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZnJvbShtKSB7XG4gICAgICAuZ2FsbGVyeVtkYXRhLW1heD1cIjVcIl0gJixcbiAgICAgIC5nYWxsZXJ5W2RhdGEtbWF4PVwiOVwiXSAmIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IG1hcC1nZXQoJGNvbHVtbi13aWR0aHMsIDQpO1xuICAgICAgICB3aWR0aDogICAgICAgICAgbWFwLWdldCgkY29sdW1uLXdpZHRocywgNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZnJvbSh4bCkge1xuICAgICAgLmdhbGxlcnlbZGF0YS1tYXg9XCIxMFwiXSAmIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IG1hcC1nZXQoJGNvbHVtbi13aWR0aHMsIDUpO1xuICAgICAgICB3aWR0aDogICAgICAgICAgbWFwLWdldCgkY29sdW1uLXdpZHRocywgNSk7XG4gICAgICB9XG5cbiAgICAgIC5nYWxsZXJ5W2RhdGEtbWF4PVwiMTJcIl0gJiB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiBtYXAtZ2V0KCRjb2x1bW4td2lkdGhzLCA2KTtcbiAgICAgICAgd2lkdGg6ICAgICAgICAgIG1hcC1nZXQoJGNvbHVtbi13aWR0aHMsIDYpO1xuICAgICAgfVxuICAgIH0gKi9cbiAgfVxuXG4gICAgJl9fZXh0cmEge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAgNTAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgfVxufVxuIiwiLmhhbWJ1cmdlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmX19ib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBoZWlnaHQ6IDAuNzVyZW07XG4gICAgd2lkdGg6ICAxLjEyNXJlbTtcbiAgfVxuXG4gICAgJl9fbGF5ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShibGFjayk7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogMC4xMjVyZW07XG4gICAgICB3aWR0aDogIDEwMCU7XG5cbiAgICAgIC5uYXYtaW4taGVybyAuaGVhZGVyICYge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHdoaXRlKTtcbiAgICAgIH1cbiAgICB9XG59XG4iLCIkaGVhZGVyLWNvbG9yLS1iYWNrZ3JvdW5kOiBwYWxldHRlKHdoaXRlKTtcblxuJGxvZ28td2lkdGgtLWxhcmdlOiAgICAgICAgNXJlbTtcbiRsb2dvLXdpZHRoLS1zbWFsbDogICAgICAgIDVyZW07XG5cbi5oZWFkZXIge1xuICAmLCAmX19pbm5lciB7XG4gICAgLy8gQFRPRE86IFJlYXNzZXNzIHNwZWNpZmljaXR5XG4gICAgLm5hdi1pbi1oZXJvICYsXG4gICAgLm5hdi1pbi1oZXJvLS1mcm9udC5ob21lICYge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAgMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAmX19pbm5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvci0tYmFja2dyb3VuZDtcbiAgICBoZWlnaHQ6ICRoZWFkZXItaGVpZ2h0LS1tb2JpbGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiBzcGFjaW5nKDIgNCk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjRzICR0cmFuc2l0aW9uLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgMC40cyAkdHJhbnNpdGlvbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDA7XG5cbiAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgIHBhZGRpbmc6IHNwYWNpbmcoNCk7XG4gICAgICBoZWlnaHQ6ICRoZWFkZXItaGVpZ2h0O1xuICAgIH1cblxuICAgIC5uYXYtaW4taGVybyAmLFxuICAgIC5uYXYtaW4taGVyby0tZnJvbnQuaG9tZSAmIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cblxuICAgIC5zdGlja3ktaGVhZGVyIC5oZWFkZXIgJiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yLS1iYWNrZ3JvdW5kO1xuICAgICAgYm9yZGVyLWJvdHRvbTogcGFsZXR0ZSh3aGl0ZSwgZGFyaykgMXB4IHNvbGlkO1xuICAgICAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjA3NSkgMCAwIDEuNXJlbTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMHMgbGluZWFyO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuXG4gICAgICAmLmlzLXVwLFxuICAgICAgJi5pcy1kb3duIHtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgJHRyYW5zaXRpb247XG4gICAgICB9XG5cbiAgICAgICYuaXMtdXAge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICAgICAgfVxuXG4gICAgICAmLmlzLWRvd24ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJyYW5kIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgd2lkdGg6ICRsb2dvLXdpZHRoLS1zbWFsbDtcblxuICAgICAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgICAgIHdpZHRoOiAkbG9nby13aWR0aC0tbGFyZ2U7XG4gICAgICB9XG5cbiAgICAgIC5sb2dvIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubmF2LS1wcmltYXJ5IHtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICB9XG4gIH1cbn1cbiIsIi5oZXJvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC5pbnRlcm5hbCAmLFxuICAuc2luZ2xlICYge1xuICAgIC5oZXJvX193cmFwIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDIwcmVtO1xuXG4gICAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgICAgbWluLWhlaWdodDogMjVyZW07XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgICBtaW4taGVpZ2h0OiAzMHJlbTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZnJvbShsKSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDM1cmVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5ob21lICYge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtICN7JGhlYWRlci1oZWlnaHQtLW1vYmlsZX0pO1xuICAgIG1pbi1oZWlnaHQ6IDMwcmVtO1xuXG4gICAgQGluY2x1ZGUgZnJvbShtKSB7XG4gICAgICBtaW4taGVpZ2h0OiAzNXJlbTtcbiAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtICN7JGhlYWRlci1oZWlnaHR9KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDQ1cmVtO1xuICAgIH1cblxuICAgIC5zd2lwZXItY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICAgICAuc3dpcGVyLXNsaWRlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgLmhlcm9fX2lubmVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNsaWRlcl9fcGFnaW5hdGlvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX193cmFwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJl9fbWVkaWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IC0yO1xuXG4gICAgLmhlcm8tLWJhbm5lciAmIHtcbiAgICAgIG9yZGVyOiAyO1xuICAgIH1cbiAgfVxuXG4gICYuY29udGVudC1hbGlnbiB7XG4gICAgJi0tY2VudGVyIHtcbiAgICAgIC5oZXJvX19jb250ZW50IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICZfX2lubmVyIHtcbiAgICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1yaWdodCB7XG4gICAgICAuaGVyb19fY29udGVudCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgICZfX2lubmVyIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuYmctaW1nIHtcbiAgICBAaW5jbHVkZSBvLW92ZXJsYXk7XG4gIH1cblxuICAmX192aWRlbyB7XG4gICAgQGluY2x1ZGUgby1vdmVybGF5O1xuXG4gICAgKyAuaGVyb19fbWVkaWEge1xuICAgICAgLmJnLWltZyB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2lubmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGluY2x1ZGUgby1ib3g7XG4gICAgY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuXG4gICAgJl9faW5uZXIge1xuICAgICAgLmhvbWUgJiB7XG4gICAgICAgIG1heC13aWR0aDogJG1heC13aWR0aC0tbmFycm93O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5oZXJvLS1mdWxsICYge1xuICAgICAgY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICAgIH1cblxuICAgIC5oZXJvLS1iYW5uZXIgJiB7XG4gICAgICBAaW5jbHVkZSBvLXdyYXBwZXI7XG4gICAgICBwYWRkaW5nLXRvcDogICAgc3BhY2luZygzKTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiBzcGFjaW5nKDUpO1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgICBwYWRkaW5nLXRvcDogICAgc3BhY2luZyg2KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHNwYWNpbmcoMTApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZXRhIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHNwYWNpbmcoNCk7XG4gICAgICBjb2xvcjogcGFsZXR0ZSh3aGl0ZSk7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB9XG5cbiAgICAgIGEge1xuICAgICAgICBjb2xvcjogcGFsZXR0ZSh3aGl0ZSk7XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci0tbGluaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1uYXYtYnV0dG9ucz1cInRydWVcIl0ge1xuICAgIC5uYXYtLW1ldGEge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAubGlua3Mge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgICBAaW5jbHVkZSBhdCh4cykge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYnV0dG9uICsgLmJ1dHRvbiB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLmljb24ge1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgd2lkdGg6ICAxLjVyZW07XG5cbiAgJi0tbGFyZ2Uge1xuICAgIGhlaWdodDogMi41cmVtO1xuICAgIHdpZHRoOiAgMi41cmVtO1xuICB9XG59XG5cbi5mYWRlLWxhenlsb2FkIHtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICR0cmFuc2l0aW9uO1xuICBvcGFjaXR5OiAwO1xuXG4gICYubGF6eWxvYWRlZCB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuIiwiLmxpc3Qge1xuICBAaW5jbHVkZSBvLWxpc3QtLWJhcmU7XG5cbiAgJl9faXRlbSB7XG4gICAgQGluY2x1ZGUgby1saXN0X19pdGVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgICAmX19pY29uIHtcbiAgICAgIGZpbGw6IHBhbGV0dGUoYnJhbmQpO1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICAgIHdpZHRoOiAgMS41cmVtO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBzcGFjaW5nKDIpO1xuXG4gICAgICAuaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuaGFzLWRlc2NyaXB0aW9uIHtcbiAgICAgIC5saXN0X19pdGVtX19pbm5lciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLm1hcCB7XG4gICZfX2xlZ2VuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICZfX2NhbnZhcyB7XG4gICAgaGVpZ2h0OiAxMDB2dztcbiAgfVxuXG4gIEBpbmNsdWRlIGZyb20ocykge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLy9taW4taGVpZ2h0OiA3NXZoO1xuXG4gICAgJl9fbGVnZW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtaW4td2lkdGg6IDI1dnc7XG5cbiAgICAgIC5jb21wb25lbnQudS1iYWNrZ3JvdW5kLWNvbG9yLS1saWdodCArIC5tYXAgJiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUod2hpdGUsIGRhcmspO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2hhbmRsZXIge1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgIH1cblxuICAgICAgJl9fY2FudmFzIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICB9XG59XG5cbi5sZWdlbmQge1xuICBwYWRkaW5nOiBzcGFjaW5nKDQpO1xuXG4gICZfX2xpc3Qge1xuICAgIEBpbmNsdWRlIG8tbGlzdC0tYmFyZTtcbiAgfVxuXG4gICAgJl9fcGluIHtcbiAgICAgIEBpbmNsdWRlIG8tbGlzdF9faXRlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuNHMgZWFzZTtcblxuICAgICAgJi5pcy1hY3RpdmUsXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci0tbGluaztcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBjb2xvcjogZGFya2VuKCRjb2xvci0tbGluaywgNSUpO1xuICAgICAgfVxuXG4gICAgICAqIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG4gICAgfVxufVxuIiwiLm1lZGlhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShncmV5LCBkYXJrKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMTAwJTtcblxuICAmW2RhdGEtcmF0aW89XCIxOjFcIl0ge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB9XG5cbiAgJltkYXRhLXJhdGlvPVwiMTY6OVwiXSB7XG4gICAgcGFkZGluZy1ib3R0b206IHBlcmNlbnRhZ2UoOSAvIDE2KTtcbiAgfVxuXG4gICZbZGF0YS1yYXRpbz1cIjIxOjlcIl0ge1xuICAgIHBhZGRpbmctYm90dG9tOiBwZXJjZW50YWdlKDkgLyAyMSk7XG4gIH1cblxuICAqIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAgMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogIDEwMCU7XG4gIH1cblxuICBwaWN0dXJlLFxuICBpbWcge1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICB9XG59XG4iLCIubWV0YSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG5cbiAgJl9fcHJvcCB7XG4gICAgYm9yZGVyLWxlZnQ6ICRjb2xvci0tYm9yZGVyIDFweCBzb2xpZDtcbiAgICBwYWRkaW5nLWxlZnQ6IHNwYWNpbmcoKTtcbiAgICBtYXJnaW4tbGVmdDogIHNwYWNpbmcoKTtcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6ICAwO1xuICAgIH1cbiAgfVxuXG4gIGEge1xuICAgIGNvbG9yOiAkY29sb3ItLXRleHQ7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC0tYm9keTtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjb2xvci0tbGluaztcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogZGFya2VuKCRjb2xvci0tbGluaywgMTAlKTtcbiAgICB9XG4gIH1cbn1cbiIsIi5uYXYge1xuICAvLyAmLS1kZXNrdG9wIHtcbiAgLy8gICBkaXNwbGF5OiBmbGV4O1xuICAvLyAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC8vICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIC8vIH1cblxuICAvLyAmLS1tZXRhIHtcbiAgLy8gICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAvLyB9XG5cbiAgJi0tbW9iaWxlIHtcbiAgICBtYXJnaW46ICAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAuZmx5b3V0X19jbG9zZSB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQ6IHBhbGV0dGUod2hpdGUpO1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcGFsZXR0ZShncmV5LCBsaWdodGVyKTtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAgIDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyAkdHJhbnNpdGlvbi0tZWFzZS1vdXQtY3ViaWM7XG4gICAgd2lkdGg6ICAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAxO1xuXG4gICAgLm5hdl9faW5uZXIge1xuICAgICAgLy9taW4taGVpZ2h0OiAxMDAlO1xuICAgICAgcGFkZGluZzogc3BhY2luZygxMiA0KTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgQGluY2x1ZGUgYXQocykge1xuICAgICAgICBAbWVkaWEgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHtcbiAgICAgICAgICBwYWRkaW5nOiBzcGFjaW5nKDEyIDQgNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZnJvbShtKSB7XG4gICAgICAgIHBhZGRpbmc6IHNwYWNpbmcoMjAgOCk7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obCkge1xuICAgICAgICBwYWRkaW5nOiBzcGFjaW5nKDIzIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuM3MsIGNvbG9yIDAuNHMgZWFzZTtcbiAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5uby1qcyAmIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgei1pbmRleDogMjtcbiAgICB9XG5cbiAgICAmX19jb250YWN0IHtcbiAgICAgIHBhZGRpbmctdG9wOiBzcGFjaW5nKDQpO1xuXG4gICAgICAuY29udGFjdC1pbmZvIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICA+IHVsIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgbGkge1xuICAgICAgICAgICAgcGFkZGluZzogc3BhY2luZygxIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbnMge1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoOCk7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgIC5idXR0b24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKCk7XG4gICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fc29jaWFsIHtcbiAgICAgIG1hcmdpbi10b3A6IHNwYWNpbmcoNCk7XG5cbiAgICAgIC5zb2NpYWwge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5saW5rcyB7XG4gICAgICAuYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWF4LXdpZHRoOiAzNTBweDtcbiAgICAgIH1cblxuICAgICAgLmJ1dHRvbiArIC5idXR0b24ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5uYXZfX2Zvb3RlciB7XG4gICAgICBtYXJnaW4tdG9wOiA0cmVtO1xuICAgIH1cbiAgfVxufVxuXG4ubWVudSB7XG4gICYtLWRlc2t0b3Age1xuICAgIEBpbmNsdWRlIG8tbGlzdC0tYmFyZTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLm1lbnVfX2l0ZW0ge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIG1hcmdpbi1yaWdodDogc3BhY2luZyg2KTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJi0tcGFyZW50LWxpbmsge1xuICAgICAgICA+IC5pY29uIHtcbiAgICAgICAgICBjb250ZW50OiB1cmwoLi4vaW1hZ2VzL3N5bWJvbHMvY2hldnJvbi11cC5zdmcpO1xuICAgICAgICAgIGZpbGw6ICRjb2xvci0tdGV4dDtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgICB3aWR0aDogIDEuNXJlbTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKSBzY2FsZVkoLTEpO1xuICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzICR0cmFuc2l0aW9uLCBmaWxsIDAuM3MgJHRyYW5zaXRpb247XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogIDg1JTtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgLy8gbWFyZ2luLXRvcDogLTAuMTI1cmVtO1xuICAgICAgICAgIHotaW5kZXg6IDE1O1xuXG4gICAgICAgICAgLm5hdi1pbi1oZXJvOm5vdCguc3RpY2t5LWhlYWRlcikgJiB7XG4gICAgICAgICAgICBmaWxsOiBwYWxldHRlKHdoaXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmlzLWV4cGFuZGVkIHtcbiAgICAgICAgICA+IC5pY29uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApIHNjYWxlWSgxKTtcblxuICAgICAgICAgICAgLm5hdi1pbi1oZXJvOm5vdCguc3RpY2t5LWhlYWRlcikgJiB7XG4gICAgICAgICAgICAgIGZpbGw6ICRjb2xvci0tdGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQFRPRE86IEZpeFxuICAgICAgLy8gJi5pcy1hY3RpdmUge1xuICAgICAgLy8gICAmOjphZnRlciB7XG4gICAgICAvLyAgICAgY29udGVudDogJyc7XG4gICAgICAvLyAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLS10ZXh0O1xuICAgICAgLy8gICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC40cyBlYXNlO1xuICAgICAgLy8gICAgIGhlaWdodDogMC4xMjVyZW07XG4gICAgICAvLyAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAvLyAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgLy8gICAgIHRvcDogMTAwJTtcbiAgICAgIC8vICAgICBsZWZ0OiAwO1xuXG4gICAgICAvLyAgICAgLm5hdi1pbi1oZXJvOm5vdCguc3RpY2t5LWhlYWRlcikgJiB7XG4gICAgICAvLyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHdoaXRlKTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgIH1cblxuICAgICAgLy8gICAmOmhvdmVyIHtcbiAgICAgIC8vICAgICAmOjphZnRlciB7XG4gICAgICAvLyAgICAgICAmLFxuICAgICAgLy8gICAgICAgLm5hdi1pbi1oZXJvOm5vdCguc3RpY2t5LWhlYWRlcikgJiB7XG4gICAgICAvLyAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci0tbGluaztcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cblxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItLXRleHQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAvLyBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtLWJvZHk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci0tbGluaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaW4taGVybzpub3QoLnN0aWNreS1oZWFkZXIpICYge1xuICAgICAgICAgIGNvbG9yOiBwYWxldHRlKHdoaXRlKTtcblxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci0tbGluaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnN1Yi1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZSh3aGl0ZSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC4yNXJlbSAzcmVtIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAgODUlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAxMXJlbTtcbiAgICAgICAgcGFkZGluZzogc3BhY2luZygzIDQpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxcmVtKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2UsIHZpc2liaWxpdHkgMC41cyBlYXNlO1xuICAgICAgICB3aWR0aDogcmVtLWNhbGMoNDAwKTtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICB6LWluZGV4OiAxMDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgLTAuMTI1cmVtIDAuMTI1cmVtIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYm90dG9tOiAxMDAlO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzICR0cmFuc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbnVfX2l0ZW0ge1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2luZygzKTtcblxuICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGEge1xuICAgICAgICAgICAgJixcbiAgICAgICAgICAgIC5uYXYtaW4taGVybzpub3QoLnN0aWNreS1oZWFkZXIpICYge1xuICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuXG4gICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItLWxpbms7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5pcy1leHBhbmRlZCB7XG4gICAgICAgIC5zdWItbWVudSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXG4gICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLS1tb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAvLyByaWdodDogMDtcbiAgICAvLyB6LWluZGV4OiAyMDAwMDtcblxuICAgIC5tZW51X193cmFwIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogICAgMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgICAgLm1lbnVfX2xldmVsIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6ICAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICBtYXJnaW46ICAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmLS1jdXJyZW50IHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hbmltYXRlLW91dFRvUmlnaHQgLm1lbnVfX2l0ZW0ge1xuICAgICAgICAgIGFuaW1hdGlvbjogb3V0VG9SaWdodCAwLjZzIGJvdGggY3ViaWMtYmV6aWVyKDAuNywgMCwgMC4zLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYW5pbWF0ZS1vdXRUb0xlZnQgLm1lbnVfX2l0ZW0ge1xuICAgICAgICAgIGFuaW1hdGlvbjogb3V0VG9MZWZ0IDAuNnMgYm90aCBjdWJpYy1iZXppZXIoMC43LCAwLCAwLjMsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hbmltYXRlLWluRnJvbUxlZnQgLm1lbnVfX2l0ZW0ge1xuICAgICAgICAgIGFuaW1hdGlvbjogaW5Gcm9tTGVmdCAwLjZzIGJvdGggY3ViaWMtYmV6aWVyKDAuNywgMCwgMC4zLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYW5pbWF0ZS1pbkZyb21SaWdodCAubWVudV9faXRlbSB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBpbkZyb21SaWdodCAwLjZzIGJvdGggY3ViaWMtYmV6aWVyKDAuNywgMCwgMC4zLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAgIC5tZW51X19pdGVtIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgLm1lbnVfX2xpbmsge1xuICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICAgLm1lbnVfX2xpbmsge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuICAgICAgICAgICAgZmlsbDogICRjb2xvci0tdGV4dDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtLXJlZ3VsYXI7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHNwYWNpbmcoMSAwKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuXG4gICAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgICAgICAgIHdpZHRoOiAgMS4yNXJlbTtcbiAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHNwYWNpbmcoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlKGJyYW5kKTtcbiAgICAgICAgICAgICAgZmlsbDogIHBhbGV0dGUoYnJhbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgIC5tZW51X19iYWNrIHtcbiAgICAgIGJhY2tncm91bmQ6IHBhbGV0dGUod2hpdGUpO1xuICAgICAgY29sb3I6ICRjb2xvci0tdGV4dDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJvdHRvbTogMTAwJTtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgdG9wOiBzcGFjaW5nKC05KTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC0tYm9sZDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjU7XG4gICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyAkdHJhbnNpdGlvbi0tZWFzZS1vdXQtY3ViaWMsIG9wYWNpdHkgMC4yNXMgJHRyYW5zaXRpb24tLWVhc2Utb3V0LWN1YmljLCBjb2xvciAwLjRzIGVhc2U7XG4gICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgICB0b3A6ICBzcGFjaW5nKC0xNSk7XG4gICAgICAgIHJpZ2h0OiBzcGFjaW5nKC00KTtcbiAgICAgIH1cblxuICAgICAgJi5pcy1oaWRkZW4ge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpO1xuICAgICAgfVxuXG4gICAgICAuaWNvbiB7XG4gICAgICAgIGZpbGw6ICRjb2xvci0tdGV4dDtcbiAgICAgICAgdHJhbnNpdGlvbjogZmlsbCAwLjRzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICBmaWxsOiBwYWxldHRlKGJyYW5kKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIFtjbGFzc149J2FuaW1hdGUtJ10sXG4gICAgW2NsYXNzKj0nIGFuaW1hdGUtJ10ge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5jb250ZW50LFxuLm1haW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wYWdlIHtcbiAgJl9faGVhZGVyIHtcbiAgICBwYWRkaW5nOiBzcGFjaW5nKDUgNCAwKTtcblxuICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgcGFkZGluZzogc3BhY2luZyg1IDAgMCk7XG4gICAgfVxuICB9XG5cbiAgJl9faW5uZXIge1xuICAgIEBpbmNsdWRlIG8tYm94KGhvcml6b250YWwpO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGluY2x1ZGUgby13cmFwcGVyO1xuICB9XG5cbiAgJl9fYm9keSB7XG4gICAgcGFkZGluZy10b3A6IHNwYWNpbmcoNCk7XG5cbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIHBhZGRpbmctdG9wOiBzcGFjaW5nKDEwKTtcbiAgICB9XG4gIH1cbn1cbiIsIi53cC1wYWdlbmF2aSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tdG9wOiBzcGFjaW5nKDUpO1xuXG4gIC5wYWdlcyB7XG4gICAgQGluY2x1ZGUgaGlkZGVuLXZpc3VhbGx5O1xuICB9XG5cbiAgYSxcbiAgc3BhbiB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiAkY29sb3ItLXRleHQ7XG4gICAgbWFyZ2luOiAwIHNwYWNpbmcoKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgLy8gdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbiAwLjNzLCBjb2xvciAkdHJhbnNpdGlvbiAwLjNzO1xuICAgIGhlaWdodDogMnJlbTtcbiAgICB3aWR0aDogIDJyZW07XG4gIH1cblxuICBhIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItLWxpbms7XG4gICAgfVxuICB9XG5cbiAgLmN1cnJlbnQge1xuICAgIGJhY2tncm91bmQ6IHBhbGV0dGUoYnJhbmQpO1xuICAgIGNvbG9yOiBwYWxldHRlKHdoaXRlKTtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1ib2xkO1xuICB9XG5cbiAgLmV4dGVuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5wcmV2aW91c3Bvc3RzbGluayxcbiAgLm5leHRwb3N0c2xpbmsge1xuICAgIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgfVxuXG4gIC5wcmV2aW91c3Bvc3RzbGluayB7XG4gICAgQGluY2x1ZGUgY2hldnJvbihsZWZ0KTtcbiAgfVxuXG4gIC5uZXh0cG9zdHNsaW5rIHtcbiAgICBAaW5jbHVkZSBjaGV2cm9uKHJpZ2h0KTtcbiAgfVxufVxuIiwiLmZlYXR1cmVkLXBvc3RzIHtcbiAgJl9fbGlzdCB7XG4gICAgQGluY2x1ZGUgby1saXN0LS10ZWFzZXJzO1xuICB9XG5cbiAgQGluY2x1ZGUgdG8obCkge1xuICAgIC5wb3N0Om50aC1jaGlsZCg1KSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHRvKG0pIHtcbiAgICAucG9zdDpudGgtY2hpbGQoNCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSB0byhzKSB7XG4gICAgLnBvc3Q6bnRoLWNoaWxkKDMpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi5wb3N0IHtcbiAgJl9faW5uZXIge1xuICAgIEBpbmNsdWRlIG8tYm94O1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGluY2x1ZGUgby1jb250ZW50O1xuICB9XG5cbiAgJi0tdGVhc2VyIHtcbiAgICBAaW5jbHVkZSBvLWxpc3RfX2l0ZW0tLXRlYXNlcjtcbiAgICBjb2xvcjogJGNvbG9yLS10ZXh0O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtLWJvZHk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDUpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLnBvc3RfX2NvbnRlbnQge1xuICAgICAgcGFkZGluZy10b3A6IHNwYWNpbmcoNSk7XG4gICAgfVxuXG4gICAgLnBvc3RfX3N1bW1hcnkge1xuICAgICAgLy9mb250LXNpemU6IDFyZW07XG4gICAgfVxuXG4gICAgLm1ldGEge1xuICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIC8vIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2luZygpO1xuICAgIH1cblxuICAgICYucG9zdC0tZmVhdHVyZWQge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuXG4gICAgICAucG9zdF9fY29udGVudCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQFRPRE86IFJlbW92ZSBzbGlkZXMgcGVyIHZpZXcgb3B0aW9uIGZvciBzbGlkZSBwcmV2aWV3XG4vLyBAVE9ETzogVGVzdCB3aXRoIGZld2VyIHRoYW4gNCBzbGlkZXNcbi5zbGlkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgcGFkZGluZy10b3A6IDI0cHg7XG4gIH1cblxuICAmLmhhcy1wcmV2aWV3cyB7XG4gICAgLnN3aXBlci1zbGlkZSB7XG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDRyZW0pO1xuICAgICAgd2lkdGg6ICBjYWxjKDEwMCUgLSA0cmVtKTtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbiAwLjNzLCB0cmFuc2Zvcm0tb3JpZ2luICR0cmFuc2l0aW9uIDAuM3M7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7XG5cbiAgICAgICYuc3dpcGVyLXNsaWRlLWFjdGl2ZSxcbiAgICAgICYuc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1hY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgfVxuXG4gICAgICAmLnN3aXBlci1zbGlkZS1hY3RpdmUge1xuICAgICAgICAmLFxuICAgICAgICAmIH4gLnN3aXBlci1zbGlkZSB7XG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICAgIGhlaWdodDogY2FsYyg3MCUgLSAycmVtKTtcbiAgICAgICAgd2lkdGg6ICBjYWxjKDcwJSAtIDJyZW0pO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKCN7cGVyY2VudGFnZSgxLzMpfSAtIDIuNXJlbSk7XG4gICAgICAgIHdpZHRoOiAgY2FsYygje3BlcmNlbnRhZ2UoMS8zKX0gLSAyLjVyZW0pO1xuXG4gICAgICAgICYuc3dpcGVyLXNsaWRlLXByZXYsXG4gICAgICAgICYuc3dpcGVyLXNsaWRlLWFjdGl2ZSxcbiAgICAgICAgJi5zd2lwZXItc2xpZGUtbmV4dCxcbiAgICAgICAgJi5zd2lwZXItc2xpZGUtZHVwbGljYXRlLXByZXYsXG4gICAgICAgICYuc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1hY3RpdmUsXG4gICAgICAgICYuc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1uZXh0IHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obCkge1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMjUlIC0gKDMgLyA0KSAqIDFyZW0pO1xuICAgICAgICB3aWR0aDogIGNhbGMoMjUlIC0gKDMgLyA0KSAqIDFyZW0pO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX25hdmlnYXRpb24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmaWxsOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgIHRyYW5zaXRpb246IGZpbGwgMC40cyBlYXNlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICAuaWNvbiB7XG4gICAgICBoZWlnaHQ6IDRyZW07XG4gICAgICB3aWR0aDogIDRyZW07XG4gICAgfVxuXG4gICAgJi0tcHJldmlvdXMge1xuICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAmLS1uZXh0IHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgZmlsbDogcGFsZXR0ZShicmFuZCk7XG4gICAgfVxuXG4gICAgJi5zd2lwZXItYnV0dG9uLWRpc2FibGVkIHtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIGZpbGw6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICB9XG4gIH1cblxuICAmX19wYWdpbmF0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luOiBzcGFjaW5nKDIgMCk7XG4gIH1cblxuICAgICZfX2J1bGxldCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKGdyZXksIGxpZ2h0ZXIpO1xuICAgICAgLy8gYm9yZGVyOiBwYWxldHRlKGdyZXkpIDJweCBzb2xpZDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAwLjM3NXJlbSByZ2JhKDAsIDAsIDAsIDApO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IDAuNzVyZW07XG4gICAgICB3aWR0aDogIDAuNzVyZW07XG4gICAgICBtYXJnaW46IHNwYWNpbmcoMCAwLjUpO1xuICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzIGVhc2U7XG5cbiAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAwLjM3NXJlbSBwYWxldHRlKGJyYW5kKTtcbiAgICAgIH1cblxuICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggcGFsZXR0ZShicmFuZCk7XG4gICAgICB9XG4gICAgfVxufVxuIiwiLnNvY2lhbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgJl9fbGluayB7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiBzcGFjaW5nKDIpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEBUT0RPOiBVcGRhdGUgc3R5bGVzXG4udGFibGUge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJl9fY29udGVudCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIHRoLCB0ZCB7XG4gICAgICBwYWRkaW5nOiBzcGFjaW5nKDIgMyk7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBAaW5jbHVkZSB0byh4cykge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDMxMzQ7XG4gICAgICAgICAgY29sb3I6IHBhbGV0dGUod2hpdGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgICAvLyBwYWRkaW5nOiBzcGFjaW5nKDMgMik7XG4gICAgICAgIC8vIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAvLyAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgLy8gICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhlYWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzEzNDtcbiAgICAgIGNvbG9yOiBwYWxldHRlKHdoaXRlKTtcblxuICAgICAgdGgge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LS1ib2xkO1xuICAgICAgICAvLyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0Ym9keSB7XG4gICAgICB0ciB7XG4gICAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0ZjU7XG4gICAgICAgIH1cblxuICAgICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtLWJvbGQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGluY2x1ZGUgdG8oeHMpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtdGgpICc6ICc7IC8vIHdobyBrbmV3IHlvdSBjb3VsZCBkbyB0aGlzPyBUaGUgaW50ZXJuZXQsIHRoYXQncyB3aG8uXG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgICAgICAgICAgIC8vIG9wdGlvbmFsIHN0dWZmIHRvIG1ha2UgaXQgbG9vayBuaWNlclxuICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgIHdpZHRoOiA1MCU7IC8vIG1hZ2ljIG51bWJlciA6KCBhZGp1c3QgYWNjb3JkaW5nIHRvIHlvdXIgb3duIGNvbnRlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi50ZWFtIHtcbiAgJl9fbGlzdCB7XG4gICAgQGluY2x1ZGUgby1saXN0LS10ZWFzZXJzO1xuICB9XG59XG5cbi50ZWFtLW1lbWJlciB7XG4gICZfX2hlYWQtc2hvdCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXgtd2lkdGg6IDhyZW07XG4gICAgbWFyZ2luOiAwIDAgc3BhY2luZygzKTtcbiAgfVxuXG4gICYtLXRlYXNlciB7XG4gICAgQGluY2x1ZGUgby1saXN0X19pdGVtLS10ZWFzZXI7XG4gICAgY29sb3I6ICRjb2xvci0tdGV4dDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiBzcGFjaW5nKDUpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgZmxleC1iYXNpczogY2FsYygje3BlcmNlbnRhZ2UoMS8yKX0gLSAje3NwYWNpbmcoMiAvIDIpfSk7XG5cbiAgICAmOm50aC1vZi10eXBlKDJuKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIGZsZXgtYmFzaXM6IGNhbGMoI3twZXJjZW50YWdlKDEvMyl9IC0gI3tzcGFjaW5nKDggLyAzKX0pO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAycmVtO1xuXG4gICAgICAmOm50aC1vZi10eXBlKDJuKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJyZW07XG4gICAgICB9XG5cbiAgICAgICY6bnRoLW9mLXR5cGUoM24pIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGZyb20obCkge1xuICAgICAgZmxleC1iYXNpczogY2FsYygje3BlcmNlbnRhZ2UoMS80KX0gLSAje3NwYWNpbmcoMzAgLyA0KX0pO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBzcGFjaW5nKDEwKTtcblxuICAgICAgJjpudGgtb2YtdHlwZSgybiksXG4gICAgICAmOm50aC1vZi10eXBlKDNuKSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogc3BhY2luZygxMCk7XG4gICAgICB9XG5cbiAgICAgICY6bnRoLW9mLXR5cGUoNG4pIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC50ZWFtLW1lbWJlcl9fdGl0bGUge1xuICAgICAgbWFyZ2luLXRvcDogc3BhY2luZygtMik7XG4gICAgfVxuICB9XG59XG4iLCIudGV4dC1pbWFnZSB7XG4gIC50ZXh0LWltYWdlX193cmFwcGVyIHtcbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG5cbiAgJl9faW1hZ2UsXG4gICZfX2NvbnRlbnQge1xuICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgZmxleDogMCAwIDUwJTtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gICZfX2lubmVyIHtcbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIHBhZGRpbmctbGVmdDogc3BhY2luZyg0KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgIHBhZGRpbmctbGVmdDogc3BhY2luZyg4KTtcbiAgICB9XG4gIH1cblxuICAmX19pbWFnZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogc3BhY2luZyg0KTtcblxuICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuaW1hZ2UtY29udGFpbmVyIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHNwYWNpbmcoMik7XG5cbiAgICAgIEBpbmNsdWRlIGZyb20obSkge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiBzcGFjaW5nKDQpO1xuICAgICAgfVxuXG4gICAgICAmOjpiZWZvcmUsXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2VjO1xuICAgICAgICB3aWR0aDogNXB4O1xuICAgICAgfVxuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUoYnJhbmQpO1xuICAgICAgICBoZWlnaHQ6IDgwJTtcbiAgICAgIH1cblxuICAgICAgJl9faW5uZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNjUlO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDIwcHggI2NlY2VjZTtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi50ZXh0LWltYWdlW2RhdGEtY29udGVudC1hbGlnbm1lbnQ9XCJsZWZ0XCJdIHtcbiAgLnRleHQtaW1hZ2VfX2ltYWdlIHtcbiAgICBvcmRlcjogMjtcblxuICAgIC5pbWFnZS1jb250YWluZXIge1xuICAgICAgcGFkZGluZy1sZWZ0OiBzcGFjaW5nKDIpO1xuXG4gICAgICBAaW5jbHVkZSBmcm9tKG0pIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBzcGFjaW5nKDQpO1xuICAgICAgfVxuXG4gICAgICAmOjpiZWZvcmUsXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50ZXh0LWltYWdlX19pbm5lciB7XG4gICAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBzcGFjaW5nKDQpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZyb20obCkge1xuICAgICAgcGFkZGluZy1yaWdodDogc3BhY2luZyg4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi50aWxlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgQGluY2x1ZGUgZnJvbShzKSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgfVxuXG4gICZfX2ltYWdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDB2dztcblxuICAgIEBpbmNsdWRlIHRvKHhzKSB7XG4gICAgICBvcmRlcjogMjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSB0byhtKSB7XG4gICAgICBtaW4taGVpZ2h0OiA0OXZ3O1xuXG4gICAgICBpbWcge1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6ICAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAgMTAwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmcm9tKHMpIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgfVxuXG4gICAgLnRpbGVzW2RhdGEtYWxpZ25tZW50PVwibGVmdFwiXSAmIHtcbiAgICAgIG9yZGVyOiAyO1xuICAgIH1cbiAgfVxuXG4gICZfX2lubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICBAaW5jbHVkZSBhdChzKSB7XG4gICAgICBwYWRkaW5nOiBzcGFjaW5nKDQpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZyb20ocykge1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmcm9tKGwpIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHNwYWNpbmcoMTYpO1xuICAgICAgcGFkZGluZy1sZWZ0OiAgc3BhY2luZygxNik7XG4gICAgfVxuICB9XG59XG4iLCJoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCB1bCwgb2wge1xuICArIC5idXR0b24ge1xuICAgIG1hcmdpbi10b3A6IHNwYWNpbmcoNyk7XG4gIH1cbn1cblxuLnNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuIiwiLy8gQFRPRE86IFVwZGF0ZSB0byBiZSBtZWRpYVxuLy8gLnZpZGVvIHtcbi8vICAgJl9fZW1iZWQge1xuLy8gICAgIEBpbmNsdWRlIG8td3JhcHBlcjtcbi8vICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4vLyAgICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcbi8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8gICAgIC8vIG1heC13aWR0aDogMTAwJTtcbi8vICAgICBoZWlnaHQ6IGF1dG87XG5cbi8vICAgICBpZnJhbWUsXG4vLyAgICAgb2JqZWN0LFxuLy8gICAgIGVtYmVkIHtcbi8vICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vICAgICAgIHRvcDogIDA7XG4vLyAgICAgICBsZWZ0OiAwO1xuLy8gICAgICAgaGVpZ2h0OiAxMDAlO1xuLy8gICAgICAgd2lkdGg6ICAxMDAlO1xuLy8gICAgIH1cbi8vICAgfVxuLy8gfVxuIiwiLy8gLyoqXG4vLyAgKiBXb3JkUHJlc3MgR2VuZXJhdGVkIENsYXNzZXNcbi8vICAqIEBzZWUgaHR0cDovL2NvZGV4LndvcmRwcmVzcy5vcmcvQ1NTI1dvcmRQcmVzc19HZW5lcmF0ZWRfQ2xhc3Nlc1xuLy8gICovXG5cbi8vIC8qKiBNZWRpYSBhbGlnbm1lbnQgKi9cbi8vIC5hbGlnbm5vbmUge1xuLy8gICBtYXJnaW4tbGVmdDogMDtcbi8vICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8gICBtYXgtd2lkdGg6IDEwMCU7XG4vLyAgIGhlaWdodDogYXV0bztcbi8vIH1cblxuLy8gLmFsaWduY2VudGVyIHtcbi8vICAgZGlzcGxheTogYmxvY2s7XG4vLyAgIG1hcmdpbjogKCRzcGFjZXIgLyAyKSBhdXRvO1xuLy8gICBoZWlnaHQ6IGF1dG87XG4vLyB9XG5cbi8vIC5hbGlnbmxlZnQsXG4vLyAuYWxpZ25yaWdodCB7XG4vLyAgIG1hcmdpbi1ib3R0b206ICgkc3BhY2VyIC8gMik7XG4vLyAgIGhlaWdodDogYXV0bztcbi8vIH1cblxuLy8gQG1lZGlhIChtaW4td2lkdGg6IDMwcmVtKSB7XG4vLyAgIC5hbGlnbmxlZnQge1xuLy8gICAgIGZsb2F0OiBsZWZ0O1xuLy8gICAgIG1hcmdpbi1yaWdodDogKCRzcGFjZXIgLyAyKTtcbi8vICAgfVxuXG4vLyAgIC5hbGlnbnJpZ2h0IHtcbi8vICAgICBmbG9hdDogcmlnaHQ7XG4vLyAgICAgbWFyZ2luLWxlZnQ6ICgkc3BhY2VyIC8gMik7XG4vLyAgIH1cbi8vIH1cblxuLy8gLyoqIENhcHRpb25zICovXG5cbi8vIC8vIFRPRE86IC53cC1jYXB0aW9uIHt9XG4vLyAvLyBUT0RPOiAud3AtY2FwdGlvbiBpbWcge31cbi8vIC8vIFRPRE86IC53cC1jYXB0aW9uLXRleHQge31cblxuLy8gLyoqIFRleHQgbWVhbnQgb25seSBmb3Igc2NyZWVuIHJlYWRlcnMgKi9cbi8vIC5zY3JlZW4tcmVhZGVyLXRleHQge1xuLy8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLyAgIHdpZHRoOiAxcHg7XG4vLyAgIGhlaWdodDogMXB4O1xuLy8gICBwYWRkaW5nOiAwO1xuLy8gICBtYXJnaW46IC0xcHg7XG4vLyAgIG92ZXJmbG93OiBoaWRkZW47XG4vLyAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4vLyAgIGJvcmRlcjogMDtcbi8vICAgY29sb3I6ICMwMDA7XG4vLyAgIGJhY2tncm91bmQ6ICNmZmY7XG4vLyB9XG4iLCIudS1ib3gge1xuICBAaW5jbHVkZSBvLWJveDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjQ0xFQVJGSVhcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQXR0YWNoIG91ciBjbGVhcmZpeCBtaXhpbiB0byBhIHV0aWxpdHkgY2xhc3MuXG4gKi9cblxuLnUtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNISURFXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEhpZGUgb25seSB2aXN1YWxseSwgYnV0IGhhdmUgaXQgYXZhaWxhYmxlIGZvciBzY3JlZW4gcmVhZGVyczpcbiAqIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHlcbiAqL1xuXG4udS1oaWRkZW4tdmlzdWFsbHkge1xuICBAaW5jbHVkZSBoaWRkZW4tdmlzdWFsbHkoKTtcbn1cblxuLyoqXG4gKiBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbiByZWFkZXJzLlxuICovXG5cbi51LWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyoqXG4gKiBIaWRlIG9uIHNtYWxsIHNjcmVlbnNcbiAqL1xuXG4udS1oaWRkZW4tc21hbGwge1xuICBAaW5jbHVkZSB0byhzKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKipcbiAqIEhpZGUgb24gbGFyZ2Ugc2NyZWVuc1xuICovXG5cbi51LWhpZGRlbi1sYXJnZSB7XG4gIEBpbmNsdWRlIGZyb20obSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi51LXRleHQtYWxpZ24tLWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4udS10ZXh0LWFsaWduLS1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi51LXRleHQtYWxpZ24tLXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1dSQVBQRVJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUGFnZS1sZXZlbCBjb25zdHJhaW5pbmcgYW5kIHdyYXBwaW5nIGVsZW1lbnRzLlxuICovXG5cbi51LWNvbnRlbnQge1xuICBAaW5jbHVkZSBvLWNvbnRlbnQ7XG59XG5cbi51LXdyYXBwZXIge1xuICBAaW5jbHVkZSBvLXdyYXBwZXI7XG59XG5cbi51LXdyYXBwZXItLW5hcnJvdyB7XG4gIEBpbmNsdWRlIG8td3JhcHBlci0tbmFycm93O1xufVxuXG4udS1ib3gge1xuICBAaW5jbHVkZSBvLWJveDtcbn1cbiIsIi8qIVxuICogYmFndWV0dGVCb3guanNcbiAqIEBhdXRob3IgIGZlaW1vc2lcbiAqIEB2ZXJzaW9uIDEuMTAuMFxuICogQHVybCBodHRwczovL2dpdGh1Yi5jb20vZmVpbW9zaS9iYWd1ZXR0ZUJveC5qc1xuICovI2JhZ3VldHRlQm94LW92ZXJsYXl7ZGlzcGxheTpub25lO29wYWNpdHk6MDtwb3NpdGlvbjpmaXhlZDtvdmVyZmxvdzpoaWRkZW47dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDoxMDAwMDAwO2JhY2tncm91bmQtY29sb3I6IzIyMjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjgpOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC41cyBlYXNlO3RyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZX0jYmFndWV0dGVCb3gtb3ZlcmxheS52aXNpYmxle29wYWNpdHk6MX0jYmFndWV0dGVCb3gtb3ZlcmxheSAuZnVsbC1pbWFnZXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RleHQtYWxpZ246Y2VudGVyfSNiYWd1ZXR0ZUJveC1vdmVybGF5IC5mdWxsLWltYWdlIGZpZ3VyZXtkaXNwbGF5OmlubGluZTttYXJnaW46MDtoZWlnaHQ6MTAwJX0jYmFndWV0dGVCb3gtb3ZlcmxheSAuZnVsbC1pbWFnZSBpbWd7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bzttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjEwMCU7dmVydGljYWwtYWxpZ246bWlkZGxlOy13ZWJraXQtYm94LXNoYWRvdzowIDAgOHB4IHJnYmEoMCwwLDAsLjYpOy1tb3otYm94LXNoYWRvdzowIDAgOHB4IHJnYmEoMCwwLDAsLjYpO2JveC1zaGFkb3c6MCAwIDhweCByZ2JhKDAsMCwwLC42KX0jYmFndWV0dGVCb3gtb3ZlcmxheSAuZnVsbC1pbWFnZSBmaWdjYXB0aW9ue2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxLjg7d2hpdGUtc3BhY2U6bm9ybWFsO2NvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNik7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn0jYmFndWV0dGVCb3gtb3ZlcmxheSAuZnVsbC1pbWFnZTpiZWZvcmV7Y29udGVudDpcIlwiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDo1MCU7d2lkdGg6MXB4O21hcmdpbi1yaWdodDotMXB4fSNiYWd1ZXR0ZUJveC1zbGlkZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7d2hpdGUtc3BhY2U6bm93cmFwOy13ZWJraXQtdHJhbnNpdGlvbjpsZWZ0IC40cyBlYXNlLC13ZWJraXQtdHJhbnNmb3JtIC40cyBlYXNlO3RyYW5zaXRpb246bGVmdCAuNHMgZWFzZSwtd2Via2l0LXRyYW5zZm9ybSAuNHMgZWFzZTt0cmFuc2l0aW9uOmxlZnQgLjRzIGVhc2UsdHJhbnNmb3JtIC40cyBlYXNlO3RyYW5zaXRpb246bGVmdCAuNHMgZWFzZSx0cmFuc2Zvcm0gLjRzIGVhc2UsLXdlYmtpdC10cmFuc2Zvcm0gLjRzIGVhc2UsLW1vei10cmFuc2Zvcm0gLjRzIGVhc2V9I2JhZ3VldHRlQm94LXNsaWRlci5ib3VuY2UtZnJvbS1yaWdodHstd2Via2l0LWFuaW1hdGlvbjpib3VuY2VGcm9tUmlnaHQgLjRzIGVhc2Utb3V0O2FuaW1hdGlvbjpib3VuY2VGcm9tUmlnaHQgLjRzIGVhc2Utb3V0fSNiYWd1ZXR0ZUJveC1zbGlkZXIuYm91bmNlLWZyb20tbGVmdHstd2Via2l0LWFuaW1hdGlvbjpib3VuY2VGcm9tTGVmdCAuNHMgZWFzZS1vdXQ7YW5pbWF0aW9uOmJvdW5jZUZyb21MZWZ0IC40cyBlYXNlLW91dH1ALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlRnJvbVJpZ2h0ezAlLDEwMCV7bWFyZ2luLWxlZnQ6MH01MCV7bWFyZ2luLWxlZnQ6LTMwcHh9fUBrZXlmcmFtZXMgYm91bmNlRnJvbVJpZ2h0ezAlLDEwMCV7bWFyZ2luLWxlZnQ6MH01MCV7bWFyZ2luLWxlZnQ6LTMwcHh9fUAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VGcm9tTGVmdHswJSwxMDAle21hcmdpbi1sZWZ0OjB9NTAle21hcmdpbi1sZWZ0OjMwcHh9fUBrZXlmcmFtZXMgYm91bmNlRnJvbUxlZnR7MCUsMTAwJXttYXJnaW4tbGVmdDowfTUwJXttYXJnaW4tbGVmdDozMHB4fX0uYmFndWV0dGVCb3gtYnV0dG9uI25leHQtYnV0dG9uLC5iYWd1ZXR0ZUJveC1idXR0b24jcHJldmlvdXMtYnV0dG9ue3RvcDo1MCU7dG9wOmNhbGMoNTAlIC0gMzBweCk7d2lkdGg6NDRweDtoZWlnaHQ6NjBweH0uYmFndWV0dGVCb3gtYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDtwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7LW1vei1ib3JkZXItcmFkaXVzOjE1JTtib3JkZXItcmFkaXVzOjE1JTtiYWNrZ3JvdW5kLWNvbG9yOiMzMjMyMzI7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDUwLDUwLDUwLC41KTtjb2xvcjojZGRkO2ZvbnQ6MS42ZW0gc2Fucy1zZXJpZjstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZTt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjRzIGVhc2V9LmJhZ3VldHRlQm94LWJ1dHRvbjpmb2N1cywuYmFndWV0dGVCb3gtYnV0dG9uOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSg1MCw1MCw1MCwuOSl9LmJhZ3VldHRlQm94LWJ1dHRvbiNuZXh0LWJ1dHRvbntyaWdodDoyJX0uYmFndWV0dGVCb3gtYnV0dG9uI3ByZXZpb3VzLWJ1dHRvbntsZWZ0OjIlfS5iYWd1ZXR0ZUJveC1idXR0b24jY2xvc2UtYnV0dG9ue3RvcDoyMHB4O3JpZ2h0OjIlO3JpZ2h0OmNhbGMoMiUgKyA2cHgpO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHh9LmJhZ3VldHRlQm94LWJ1dHRvbiBzdmd7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5iYWd1ZXR0ZUJveC1zcGlubmVye3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTttYXJnaW4tdG9wOi0yMHB4O21hcmdpbi1sZWZ0Oi0yMHB4fS5iYWd1ZXR0ZUJveC1kb3VibGUtYm91bmNlMSwuYmFndWV0dGVCb3gtZG91YmxlLWJvdW5jZTJ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTstbW96LWJvcmRlci1yYWRpdXM6NTAlO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6I2ZmZjtvcGFjaXR5Oi42O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDstd2Via2l0LWFuaW1hdGlvbjpib3VuY2UgMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7YW5pbWF0aW9uOmJvdW5jZSAycyBpbmZpbml0ZSBlYXNlLWluLW91dH0uYmFndWV0dGVCb3gtZG91YmxlLWJvdW5jZTJ7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6LTFzO2FuaW1hdGlvbi1kZWxheTotMXN9QC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZXswJSwxMDAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDApO3RyYW5zZm9ybTpzY2FsZSgwKX01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpfX1Aa2V5ZnJhbWVzIGJvdW5jZXswJSwxMDAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDApOy1tb3otdHJhbnNmb3JtOnNjYWxlKDApO3RyYW5zZm9ybTpzY2FsZSgwKX01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpfX0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztnRkFFZ0Y7QUNEaEYsVUFBVSxDQUFWLFdBQVU7RUFDUixBQUFBLElBQUk7SUFDRixPQUFPLEVBQUUsQ0FBQztJQUNWLFNBQVMsRUFBRSx1QkFBdUI7RUFHcEMsQUFBQSxFQUFFO0lBQ0EsT0FBTyxFQUFFLENBQUM7SUFDVixTQUFTLEVBQUUsb0JBQW9COztBQUtuQyxVQUFVLENBQVYsVUFBVTtFQUNSLEFBQUEsRUFBRTtJQUNBLE9BQU8sRUFBRSxDQUFDO0lBQ1YsU0FBUyxFQUFFLHVCQUF1Qjs7QUFLdEMsVUFBVSxDQUFWLFVBQVU7RUFDUixBQUFBLElBQUk7SUFDRixPQUFPLEVBQUUsQ0FBQztJQUNWLFNBQVMsRUFBRSx3QkFBd0I7RUFHckMsQUFBQSxFQUFFO0lBQ0EsT0FBTyxFQUFFLENBQUM7SUFDVixTQUFTLEVBQUUsb0JBQW9COztBQUtuQyxVQUFVLENBQVYsU0FBVTtFQUNSLEFBQUEsRUFBRTtJQUNBLE9BQU8sRUFBRSxDQUFDO0lBQ1YsU0FBUyxFQUFFLHdCQUF3Qjs7QUFJdkMsQUFBQSxTQUFTLENBQUM7RUFDUixTQUFTLEVBQUUsZ0JBQWdCO0VBQzNCLG1CQUFtQixFQUFFLGtCQUFrQjtFQUN2QyxtQkFBbUIsRUFBRSxFQUFFO0VBQ3ZCLDBCQUEwQixFQUFFLG1DQUFtQztFQUMvRCxPQUFPLEVBQUUsWUFBWTtFQUNyQixnQkFBZ0IsRUFBRSxFQUFFLEdBTXJCO0VBWkQsQUFRRSxTQVJPLEFBUVAsVUFBVyxDQUFDO0lBQ1YsT0FBTyxFQUFFLFlBQVk7SUFDckIsU0FBUyxFQUFFLGFBQWEsR0FDekI7O0FBSUQsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsU0FBUyxBQUMvRCxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsRUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsRUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsRUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsSUFBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsS0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsS0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsS0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsS0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsS0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsS0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsR0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VBQ1YsZ0JBQWdCLEVBQUUsS0FBZSxDQUFDLFVBQVUsR0FDN0M7O0FBSEgsQUFDRSxTQURPLEFBQUEsVUFBVSxBQUNoRSxVQUEwRCxDQUFDO0VB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 */\",\"/* ==========================================================================\\n L E A P\\n ========================================================================== */\\n\\n// TOOLS\\n@import \\\"tools/_tools.animation.scss\\\"; @import \\\"tools/_tools.clearfix.scss\\\"; @import \\\"tools/_tools.functions.scss\\\"; @import \\\"tools/_tools.hide.scss\\\"; @import \\\"tools/_tools.palette.scss\\\"; @import \\\"tools/_tools.symbols.scss\\\";\\n\\n// SETTINGS\\n@import \\\"settings/settings.config\\\";\\n@import \\\"settings/settings.constants\\\";\\n@import \\\"settings/settings.global\\\";\\n\\n// NPM DEPENDENCIES\\n@import \\\"~breakpoint-sass/stylesheets/breakpoint\\\";\\n@import \\\"~breakpoint-slicer/stylesheets/breakpoint-slicer\\\";\\n@import \\\"~swiper/dist/css/swiper.min\\\";\\n@import \\\"~slim-select/dist/slimselect.min\\\";\\n\\n// GENERIC\\n@import \\\"~normalize.css/normalize\\\";\\n@import \\\"generic/generic.reset\\\";\\n@import \\\"generic/generic.shared\\\";\\n@import \\\"generic/generic.print\\\";\\n\\n// OBJECTS\\n@import \\\"objects/_objects.block.scss\\\"; @import \\\"objects/_objects.box.scss\\\"; @import \\\"objects/_objects.button.scss\\\"; @import \\\"objects/_objects.form.scss\\\"; @import \\\"objects/_objects.list.scss\\\"; @import \\\"objects/_objects.media.scss\\\"; @import \\\"objects/_objects.overlay.scss\\\"; @import \\\"objects/_objects.triangle.scss\\\"; @import \\\"objects/_objects.type.scss\\\"; @import \\\"objects/_objects.wrapper.scss\\\";\\n\\n// ELEMENTS\\n@import \\\"elements/_elements.blockquote.scss\\\"; @import \\\"elements/_elements.form.scss\\\"; @import \\\"elements/_elements.images.scss\\\"; @import \\\"elements/_elements.page.scss\\\"; @import \\\"elements/_elements.tables.scss\\\"; @import \\\"elements/_elements.type.scss\\\";\\n\\n// COMPONENTS\\n@import \\\"components/_components.accordion.scss\\\"; @import \\\"components/_components.archive.scss\\\"; @import \\\"components/_components.background-image.scss\\\"; @import \\\"components/_components.banner.scss\\\"; @import \\\"components/_components.button.scss\\\"; @import \\\"components/_components.columns.scss\\\"; @import \\\"components/_components.company.scss\\\"; @import \\\"components/_components.component.scss\\\"; @import \\\"components/_components.contact.scss\\\"; @import \\\"components/_components.featured-bar.scss\\\"; @import \\\"components/_components.featured-blocks.scss\\\"; @import \\\"components/_components.filter.scss\\\"; @import \\\"components/_components.flyout.scss\\\"; @import \\\"components/_components.footer.scss\\\"; @import \\\"components/_components.form.scss\\\"; @import \\\"components/_components.gallery.scss\\\"; @import \\\"components/_components.hamburger.scss\\\"; @import \\\"components/_components.header.scss\\\"; @import \\\"components/_components.hero.scss\\\"; @import \\\"components/_components.image.scss\\\"; @import \\\"components/_components.list.scss\\\"; @import \\\"components/_components.map.scss\\\"; @import \\\"components/_components.media.scss\\\"; @import \\\"components/_components.meta.scss\\\"; @import \\\"components/_components.nav.scss\\\"; @import \\\"components/_components.page.scss\\\"; @import \\\"components/_components.pagination.scss\\\"; @import \\\"components/_components.post.scss\\\"; @import \\\"components/_components.slider.scss\\\"; @import \\\"components/_components.social.scss\\\"; @import \\\"components/_components.table.scss\\\"; @import \\\"components/_components.team.scss\\\"; @import \\\"components/_components.text-and-image.scss\\\"; @import \\\"components/_components.tiles.scss\\\"; @import \\\"components/_components.type.scss\\\"; @import \\\"components/_components.video.scss\\\"; @import \\\"components/_wp-classes.scss\\\";\\n\\n// UTILITIES\\n@import \\\"utilities/_utilities.box.scss\\\"; @import \\\"utilities/_utilities.clearfix.scss\\\"; @import \\\"utilities/_utilities.hide.scss\\\"; @import \\\"utilities/_utilities.type.scss\\\"; @import \\\"utilities/_utilities.wrapper.scss\\\";\\n// @import \\\"~inuitcss/utilities/utilities.widths\\\";\\n// @import \\\"~inuitcss/utilities/utilities.spacings\\\";\\n// @import \\\"~inuitcss/utilities/utilities.responsive-spacings\\\";\\n\\n@import \\\"~baguettebox.js/dist/baguetteBox.min\\\";\\n\",\"@charset \\\"UTF-8\\\";\\n\\n/* ==========================================================================\\n L E A P\\n ========================================================================== */\\n\\n@keyframes inFromRight {\\n from {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@keyframes outToRight {\\n to {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0);\\n }\\n}\\n\\n@keyframes inFromLeft {\\n from {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n@keyframes outToLeft {\\n to {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0);\\n }\\n}\\n\\n.is-magic {\\n transform: translateY(50px);\\n transition-property: transform, opacity;\\n transition-duration: 1s;\\n transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);\\n opacity: 0 !important;\\n transition-delay: 0s;\\n}\\n\\n.is-magic.is-loaded {\\n opacity: 1 !important;\\n transform: translateY(0);\\n}\\n\\n.is-magic.delay--1.is-loaded {\\n transition-delay: 0.3s !important;\\n}\\n\\n.is-magic.delay--2.is-loaded {\\n transition-delay: 0.6s !important;\\n}\\n\\n.is-magic.delay--3.is-loaded {\\n transition-delay: 0.9s !important;\\n}\\n\\n.is-magic.delay--4.is-loaded {\\n transition-delay: 1.2s !important;\\n}\\n\\n.is-magic.delay--5.is-loaded {\\n transition-delay: 1.5s !important;\\n}\\n\\n.is-magic.delay--6.is-loaded {\\n transition-delay: 1.8s !important;\\n}\\n\\n.is-magic.delay--7.is-loaded {\\n transition-delay: 2.1s !important;\\n}\\n\\n.is-magic.delay--8.is-loaded {\\n transition-delay: 2.4s !important;\\n}\\n\\n.is-magic.delay--9.is-loaded {\\n transition-delay: 2.7s !important;\\n}\\n\\n.is-magic.delay--10.is-loaded {\\n transition-delay: 3s !important;\\n}\\n\\n.is-magic.delay--11.is-loaded {\\n transition-delay: 3.3s !important;\\n}\\n\\n.is-magic.delay--12.is-loaded {\\n transition-delay: 3.6s !important;\\n}\\n\\n.is-magic.delay--13.is-loaded {\\n transition-delay: 3.9s !important;\\n}\\n\\n.is-magic.delay--14.is-loaded {\\n transition-delay: 4.2s !important;\\n}\\n\\n.is-magic.delay--15.is-loaded {\\n transition-delay: 4.5s !important;\\n}\\n\\n.is-magic.delay--16.is-loaded {\\n transition-delay: 4.8s !important;\\n}\\n\\n.is-magic.delay--17.is-loaded {\\n transition-delay: 5.1s !important;\\n}\\n\\n.is-magic.delay--18.is-loaded {\\n transition-delay: 5.4s !important;\\n}\\n\\n.is-magic.delay--19.is-loaded {\\n transition-delay: 5.7s !important;\\n}\\n\\n.is-magic.delay--20.is-loaded {\\n transition-delay: 6s !important;\\n}\\n\\n.is-magic.delay--21.is-loaded {\\n transition-delay: 6.3s !important;\\n}\\n\\n.is-magic.delay--22.is-loaded {\\n transition-delay: 6.6s !important;\\n}\\n\\n.is-magic.delay--23.is-loaded {\\n transition-delay: 6.9s !important;\\n}\\n\\n.is-magic.delay--24.is-loaded {\\n transition-delay: 7.2s !important;\\n}\\n\\n.is-magic.delay--25.is-loaded {\\n transition-delay: 7.5s !important;\\n}\\n\\n.is-magic.delay--26.is-loaded {\\n transition-delay: 7.8s !important;\\n}\\n\\n.is-magic.delay--27.is-loaded {\\n transition-delay: 8.1s !important;\\n}\\n\\n.is-magic.delay--28.is-loaded {\\n transition-delay: 8.4s !important;\\n}\\n\\n.is-magic.delay--29.is-loaded {\\n transition-delay: 8.7s !important;\\n}\\n\\n.is-magic.delay--30.is-loaded {\\n transition-delay: 9s !important;\\n}\\n\\n.is-magic.delay--31.is-loaded {\\n transition-delay: 9.3s !important;\\n}\\n\\n.is-magic.delay--32.is-loaded {\\n transition-delay: 9.6s !important;\\n}\\n\\n.is-magic.delay--33.is-loaded {\\n transition-delay: 9.9s !important;\\n}\\n\\n.is-magic.delay--34.is-loaded {\\n transition-delay: 10.2s !important;\\n}\\n\\n.is-magic.delay--35.is-loaded {\\n transition-delay: 10.5s !important;\\n}\\n\\n.is-magic.delay--36.is-loaded {\\n transition-delay: 10.8s !important;\\n}\\n\\n.is-magic.delay--37.is-loaded {\\n transition-delay: 11.1s !important;\\n}\\n\\n.is-magic.delay--38.is-loaded {\\n transition-delay: 11.4s !important;\\n}\\n\\n.is-magic.delay--39.is-loaded {\\n transition-delay: 11.7s !important;\\n}\\n\\n.is-magic.delay--40.is-loaded {\\n transition-delay: 12s !important;\\n}\\n\\n.is-magic.delay--41.is-loaded {\\n transition-delay: 12.3s !important;\\n}\\n\\n.is-magic.delay--42.is-loaded {\\n transition-delay: 12.6s !important;\\n}\\n\\n.is-magic.delay--43.is-loaded {\\n transition-delay: 12.9s !important;\\n}\\n\\n.is-magic.delay--44.is-loaded {\\n transition-delay: 13.2s !important;\\n}\\n\\n.is-magic.delay--45.is-loaded {\\n transition-delay: 13.5s !important;\\n}\\n\\n.is-magic.delay--46.is-loaded {\\n transition-delay: 13.8s !important;\\n}\\n\\n.is-magic.delay--47.is-loaded {\\n transition-delay: 14.1s !important;\\n}\\n\\n.is-magic.delay--48.is-loaded {\\n transition-delay: 14.4s !important;\\n}\\n\\n/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n\\n/**\\n * Spacing\\n */\\n\\n/**\\n * Typography\\n */\\n\\n/**\\n * Transitions\\n */\\n\\n/**\\n * Breakpoints\\n */\\n\\n/**\\n * Palette\\n */\\n\\n/**\\n * Colours\\n */\\n\\n/**\\n * Typography\\n */\\n\\n/**\\n * Widths\\n */\\n\\n/* Heights */\\n\\n/**\\n * Swiper 4.1.6\\n * Most modern mobile touch slider and framework with hardware accelerated transitions\\n * http://www.idangero.us/swiper/\\n *\\n * Copyright 2014-2018 Vladimir Kharlampidi\\n *\\n * Released under the MIT License\\n *\\n * Released on: February 11, 2018\\n */\\n\\n.swiper-container {\\n margin: 0 auto;\\n position: relative;\\n overflow: hidden;\\n list-style: none;\\n padding: 0;\\n z-index: 1;\\n}\\n\\n.swiper-container-no-flexbox .swiper-slide {\\n float: left;\\n}\\n\\n.swiper-container-vertical > .swiper-wrapper {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -webkit-flex-direction: column;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n\\n.swiper-wrapper {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-transition-property: -webkit-transform;\\n transition-property: -webkit-transform;\\n -o-transition-property: transform;\\n transition-property: transform;\\n transition-property: transform,-webkit-transform;\\n -webkit-box-sizing: content-box;\\n box-sizing: content-box;\\n}\\n\\n.swiper-container-android .swiper-slide,\\n.swiper-wrapper {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n}\\n\\n.swiper-container-multirow > .swiper-wrapper {\\n -webkit-flex-wrap: wrap;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n}\\n\\n.swiper-container-free-mode > .swiper-wrapper {\\n -webkit-transition-timing-function: ease-out;\\n -o-transition-timing-function: ease-out;\\n transition-timing-function: ease-out;\\n margin: 0 auto;\\n}\\n\\n.swiper-slide {\\n -webkit-flex-shrink: 0;\\n -ms-flex-negative: 0;\\n flex-shrink: 0;\\n width: 100%;\\n height: 100%;\\n position: relative;\\n -webkit-transition-property: -webkit-transform;\\n transition-property: -webkit-transform;\\n -o-transition-property: transform;\\n transition-property: transform;\\n transition-property: transform,-webkit-transform;\\n}\\n\\n.swiper-invisible-blank-slide {\\n visibility: hidden;\\n}\\n\\n.swiper-container-autoheight,\\n.swiper-container-autoheight .swiper-slide {\\n height: auto;\\n}\\n\\n.swiper-container-autoheight .swiper-wrapper {\\n -webkit-box-align: start;\\n -webkit-align-items: flex-start;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n -webkit-transition-property: height,-webkit-transform;\\n transition-property: height,-webkit-transform;\\n -o-transition-property: transform,height;\\n transition-property: transform,height;\\n transition-property: transform,height,-webkit-transform;\\n}\\n\\n.swiper-container-3d {\\n -webkit-perspective: 1200px;\\n perspective: 1200px;\\n}\\n\\n.swiper-container-3d .swiper-cube-shadow,\\n.swiper-container-3d .swiper-slide,\\n.swiper-container-3d .swiper-slide-shadow-bottom,\\n.swiper-container-3d .swiper-slide-shadow-left,\\n.swiper-container-3d .swiper-slide-shadow-right,\\n.swiper-container-3d .swiper-slide-shadow-top,\\n.swiper-container-3d .swiper-wrapper {\\n -webkit-transform-style: preserve-3d;\\n transform-style: preserve-3d;\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-bottom,\\n.swiper-container-3d .swiper-slide-shadow-left,\\n.swiper-container-3d .swiper-slide-shadow-right,\\n.swiper-container-3d .swiper-slide-shadow-top {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n z-index: 10;\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-left {\\n background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-right {\\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-top {\\n background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-3d .swiper-slide-shadow-bottom {\\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(transparent));\\n background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent);\\n background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent);\\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), transparent);\\n}\\n\\n.swiper-container-wp8-horizontal,\\n.swiper-container-wp8-horizontal > .swiper-wrapper {\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n}\\n\\n.swiper-container-wp8-vertical,\\n.swiper-container-wp8-vertical > .swiper-wrapper {\\n -ms-touch-action: pan-x;\\n touch-action: pan-x;\\n}\\n\\n.swiper-button-next,\\n.swiper-button-prev {\\n position: absolute;\\n top: 50%;\\n width: 27px;\\n height: 44px;\\n margin-top: -22px;\\n z-index: 10;\\n cursor: pointer;\\n background-size: 27px 44px;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n.swiper-button-next.swiper-button-disabled,\\n.swiper-button-prev.swiper-button-disabled {\\n opacity: .35;\\n cursor: auto;\\n pointer-events: none;\\n}\\n\\n.swiper-button-prev,\\n.swiper-container-rtl .swiper-button-next {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");\\n left: 10px;\\n right: auto;\\n}\\n\\n.swiper-button-next,\\n.swiper-container-rtl .swiper-button-prev {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");\\n right: 10px;\\n left: auto;\\n}\\n\\n.swiper-button-prev.swiper-button-white,\\n.swiper-container-rtl .swiper-button-next.swiper-button-white {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-next.swiper-button-white,\\n.swiper-container-rtl .swiper-button-prev.swiper-button-white {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-prev.swiper-button-black,\\n.swiper-container-rtl .swiper-button-next.swiper-button-black {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-next.swiper-button-black,\\n.swiper-container-rtl .swiper-button-prev.swiper-button-black {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n.swiper-button-lock {\\n display: none;\\n}\\n\\n.swiper-pagination {\\n position: absolute;\\n text-align: center;\\n -webkit-transition: .3s opacity;\\n -o-transition: .3s opacity;\\n transition: .3s opacity;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n z-index: 10;\\n}\\n\\n.swiper-pagination.swiper-pagination-hidden {\\n opacity: 0;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets,\\n.swiper-pagination-custom,\\n.swiper-pagination-fraction {\\n bottom: 10px;\\n left: 0;\\n width: 100%;\\n}\\n\\n.swiper-pagination-bullets-dynamic {\\n overflow: hidden;\\n font-size: 0;\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transform: scale(0.33);\\n -ms-transform: scale(0.33);\\n transform: scale(0.33);\\n position: relative;\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\\n -webkit-transform: scale(1);\\n -ms-transform: scale(1);\\n transform: scale(1);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\\n -webkit-transform: scale(1);\\n -ms-transform: scale(1);\\n transform: scale(1);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\\n -webkit-transform: scale(0.66);\\n -ms-transform: scale(0.66);\\n transform: scale(0.66);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\\n -webkit-transform: scale(0.33);\\n -ms-transform: scale(0.33);\\n transform: scale(0.33);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\\n -webkit-transform: scale(0.66);\\n -ms-transform: scale(0.66);\\n transform: scale(0.66);\\n}\\n\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\\n -webkit-transform: scale(0.33);\\n -ms-transform: scale(0.33);\\n transform: scale(0.33);\\n}\\n\\n.swiper-pagination-bullet {\\n width: 8px;\\n height: 8px;\\n display: inline-block;\\n border-radius: 100%;\\n background: #000;\\n opacity: .2;\\n}\\n\\nbutton.swiper-pagination-bullet {\\n border: none;\\n margin: 0;\\n padding: 0;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n\\n.swiper-pagination-clickable .swiper-pagination-bullet {\\n cursor: pointer;\\n}\\n\\n.swiper-pagination-bullet-active {\\n opacity: 1;\\n background: #007aff;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets {\\n right: 10px;\\n top: 50%;\\n -webkit-transform: translate3d(0, -50%, 0);\\n transform: translate3d(0, -50%, 0);\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 6px 0;\\n display: block;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n -ms-transform: translateY(-50%);\\n transform: translateY(-50%);\\n width: 8px;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n display: inline-block;\\n -webkit-transition: .2s top,.2s -webkit-transform;\\n transition: .2s top,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s top;\\n transition: .2s transform,.2s top;\\n transition: .2s transform,.2s top,.2s -webkit-transform;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 0 4px;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n left: 50%;\\n -webkit-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n transform: translateX(-50%);\\n white-space: nowrap;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transition: .2s left,.2s -webkit-transform;\\n transition: .2s left,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s left;\\n transition: .2s transform,.2s left;\\n transition: .2s transform,.2s left,.2s -webkit-transform;\\n}\\n\\n.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n -webkit-transition: .2s right,.2s -webkit-transform;\\n transition: .2s right,.2s -webkit-transform;\\n -o-transition: .2s transform,.2s right;\\n transition: .2s transform,.2s right;\\n transition: .2s transform,.2s right,.2s -webkit-transform;\\n}\\n\\n.swiper-pagination-progressbar {\\n background: rgba(0, 0, 0, 0.25);\\n position: absolute;\\n}\\n\\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n background: #007aff;\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n -webkit-transform: scale(0);\\n -ms-transform: scale(0);\\n transform: scale(0);\\n -webkit-transform-origin: left top;\\n -ms-transform-origin: left top;\\n transform-origin: left top;\\n}\\n\\n.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n -webkit-transform-origin: right top;\\n -ms-transform-origin: right top;\\n transform-origin: right top;\\n}\\n\\n.swiper-container-horizontal > .swiper-pagination-progressbar {\\n width: 100%;\\n height: 4px;\\n left: 0;\\n top: 0;\\n}\\n\\n.swiper-container-vertical > .swiper-pagination-progressbar {\\n width: 4px;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n\\n.swiper-pagination-white .swiper-pagination-bullet-active {\\n background: #fff;\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-white {\\n background: rgba(255, 255, 255, 0.25);\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-white .swiper-pagination-progressbar-fill {\\n background: #fff;\\n}\\n\\n.swiper-pagination-black .swiper-pagination-bullet-active {\\n background: #000;\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-black {\\n background: rgba(0, 0, 0, 0.25);\\n}\\n\\n.swiper-pagination-progressbar.swiper-pagination-black .swiper-pagination-progressbar-fill {\\n background: #000;\\n}\\n\\n.swiper-pagination-lock {\\n display: none;\\n}\\n\\n.swiper-scrollbar {\\n border-radius: 10px;\\n position: relative;\\n -ms-touch-action: none;\\n background: rgba(0, 0, 0, 0.1);\\n}\\n\\n.swiper-container-horizontal > .swiper-scrollbar {\\n position: absolute;\\n left: 1%;\\n bottom: 3px;\\n z-index: 50;\\n height: 5px;\\n width: 98%;\\n}\\n\\n.swiper-container-vertical > .swiper-scrollbar {\\n position: absolute;\\n right: 3px;\\n top: 1%;\\n z-index: 50;\\n width: 5px;\\n height: 98%;\\n}\\n\\n.swiper-scrollbar-drag {\\n height: 100%;\\n width: 100%;\\n position: relative;\\n background: rgba(0, 0, 0, 0.5);\\n border-radius: 10px;\\n left: 0;\\n top: 0;\\n}\\n\\n.swiper-scrollbar-cursor-drag {\\n cursor: move;\\n}\\n\\n.swiper-scrollbar-lock {\\n display: none;\\n}\\n\\n.swiper-zoom-container {\\n width: 100%;\\n height: 100%;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -webkit-justify-content: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -webkit-align-items: center;\\n -ms-flex-align: center;\\n align-items: center;\\n text-align: center;\\n}\\n\\n.swiper-zoom-container > canvas,\\n.swiper-zoom-container > img,\\n.swiper-zoom-container > svg {\\n max-width: 100%;\\n max-height: 100%;\\n -o-object-fit: contain;\\n object-fit: contain;\\n}\\n\\n.swiper-slide-zoomed {\\n cursor: move;\\n}\\n\\n.swiper-lazy-preloader {\\n width: 42px;\\n height: 42px;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -21px;\\n margin-top: -21px;\\n z-index: 10;\\n -webkit-transform-origin: 50%;\\n -ms-transform-origin: 50%;\\n transform-origin: 50%;\\n -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite;\\n animation: swiper-preloader-spin 1s steps(12, end) infinite;\\n}\\n\\n.swiper-lazy-preloader:after {\\n display: block;\\n content: '';\\n width: 100%;\\n height: 100%;\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\");\\n background-position: 50%;\\n background-size: 100%;\\n background-repeat: no-repeat;\\n}\\n\\n.swiper-lazy-preloader-white:after {\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\");\\n}\\n\\n@-webkit-keyframes swiper-preloader-spin {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes swiper-preloader-spin {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n.swiper-container .swiper-notification {\\n position: absolute;\\n left: 0;\\n top: 0;\\n pointer-events: none;\\n opacity: 0;\\n z-index: -1000;\\n}\\n\\n.swiper-container-fade.swiper-container-free-mode .swiper-slide {\\n -webkit-transition-timing-function: ease-out;\\n -o-transition-timing-function: ease-out;\\n transition-timing-function: ease-out;\\n}\\n\\n.swiper-container-fade .swiper-slide {\\n pointer-events: none;\\n -webkit-transition-property: opacity;\\n -o-transition-property: opacity;\\n transition-property: opacity;\\n}\\n\\n.swiper-container-fade .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n\\n.swiper-container-fade .swiper-slide-active,\\n.swiper-container-fade .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n\\n.swiper-container-cube {\\n overflow: visible;\\n}\\n\\n.swiper-container-cube .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1;\\n visibility: hidden;\\n -webkit-transform-origin: 0 0;\\n -ms-transform-origin: 0 0;\\n transform-origin: 0 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.swiper-container-cube .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n\\n.swiper-container-cube.swiper-container-rtl .swiper-slide {\\n -webkit-transform-origin: 100% 0;\\n -ms-transform-origin: 100% 0;\\n transform-origin: 100% 0;\\n}\\n\\n.swiper-container-cube .swiper-slide-active,\\n.swiper-container-cube .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n\\n.swiper-container-cube .swiper-slide-active,\\n.swiper-container-cube .swiper-slide-next,\\n.swiper-container-cube .swiper-slide-next + .swiper-slide,\\n.swiper-container-cube .swiper-slide-prev {\\n pointer-events: auto;\\n visibility: visible;\\n}\\n\\n.swiper-container-cube .swiper-slide-shadow-bottom,\\n.swiper-container-cube .swiper-slide-shadow-left,\\n.swiper-container-cube .swiper-slide-shadow-right,\\n.swiper-container-cube .swiper-slide-shadow-top {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n\\n.swiper-container-cube .swiper-cube-shadow {\\n position: absolute;\\n left: 0;\\n bottom: 0;\\n width: 100%;\\n height: 100%;\\n background: #000;\\n opacity: .6;\\n -webkit-filter: blur(50px);\\n filter: blur(50px);\\n z-index: 0;\\n}\\n\\n.swiper-container-flip {\\n overflow: visible;\\n}\\n\\n.swiper-container-flip .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1;\\n}\\n\\n.swiper-container-flip .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n\\n.swiper-container-flip .swiper-slide-active,\\n.swiper-container-flip .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n\\n.swiper-container-flip .swiper-slide-shadow-bottom,\\n.swiper-container-flip .swiper-slide-shadow-left,\\n.swiper-container-flip .swiper-slide-shadow-right,\\n.swiper-container-flip .swiper-slide-shadow-top {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n\\n.swiper-container-coverflow .swiper-wrapper {\\n -ms-perspective: 1200px;\\n}\\n\\n.ss-main {\\n position: relative;\\n display: inline-block;\\n user-select: none;\\n color: #666;\\n width: 100%;\\n}\\n\\n.ss-main .ss-single-selected {\\n display: flex;\\n cursor: pointer;\\n width: 100%;\\n height: 30px;\\n padding: 6px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n box-sizing: border-box;\\n transition: background-color .3s;\\n}\\n\\n.ss-main .ss-single-selected.ss-disabled {\\n background-color: #dcdee2;\\n cursor: not-allowed;\\n}\\n\\n.ss-main .ss-single-selected.ss-open-above {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n\\n.ss-main .ss-single-selected.ss-open-below {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\\n.ss-main .ss-single-selected .placeholder {\\n flex: 1 1 100%;\\n text-align: left;\\n width: calc(100% - 30px);\\n line-height: 1em;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n\\n.ss-main .ss-single-selected .placeholder,\\n.ss-main .ss-single-selected .placeholder * {\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n.ss-main .ss-single-selected .placeholder * {\\n width: auto;\\n}\\n\\n.ss-main .ss-single-selected .placeholder .ss-disabled {\\n cursor: pointer;\\n color: #dcdee2;\\n}\\n\\n.ss-main .ss-single-selected .ss-deselect {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n flex: 0 1 auto;\\n margin: 0 5px;\\n font-weight: 700;\\n font-family: Arial,Helvetica,sans-serif;\\n}\\n\\n.ss-main .ss-single-selected .ss-deselect.ss-hide {\\n display: none;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n flex: 0 1 auto;\\n margin: 0 5px;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span {\\n border: solid #666;\\n border-width: 0 2px 2px 0;\\n display: inline-block;\\n padding: 3px;\\n transition: transform .2s,margin .2s;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-up {\\n transform: rotate(-135deg);\\n margin: 3px 0 0;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-down {\\n transform: rotate(45deg);\\n margin: -3px 0 0;\\n}\\n\\n.ss-main .ss-multi-selected {\\n display: flex;\\n flex-direction: row;\\n cursor: pointer;\\n min-height: 30px;\\n width: 100%;\\n padding: 0 0 0 3px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n box-sizing: border-box;\\n transition: background-color .3s;\\n}\\n\\n.ss-main .ss-multi-selected.ss-disabled {\\n background-color: #dcdee2;\\n cursor: not-allowed;\\n}\\n\\n.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled {\\n color: #666;\\n}\\n\\n.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete {\\n cursor: not-allowed;\\n}\\n\\n.ss-main .ss-multi-selected.ss-open-above {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n\\n.ss-main .ss-multi-selected.ss-open-below {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\\n.ss-main .ss-multi-selected .ss-values {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start;\\n flex: 1 1 100%;\\n width: calc(100% - 30px);\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-disabled {\\n display: flex;\\n padding: 4px 5px;\\n margin: 2px 0;\\n line-height: 1em;\\n align-items: center;\\n width: 100%;\\n color: #dcdee2;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n@keyframes scaleIn {\\n 0% {\\n transform: scale(0);\\n opacity: 0;\\n }\\n\\n to {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n\\n@keyframes scaleOut {\\n 0% {\\n transform: scale(1);\\n opacity: 1;\\n }\\n\\n to {\\n transform: scale(0);\\n opacity: 0;\\n }\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value {\\n display: flex;\\n user-select: none;\\n align-items: center;\\n font-size: 12px;\\n padding: 3px 5px;\\n margin: 3px 5px 3px 0;\\n color: #fff;\\n background-color: #5897fb;\\n border-radius: 4px;\\n animation-name: scaleIn;\\n animation-duration: .2s;\\n animation-timing-function: ease-out;\\n animation-fill-mode: both;\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value.ss-out {\\n animation-name: scaleOut;\\n animation-duration: .2s;\\n animation-timing-function: ease-out;\\n}\\n\\n.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete {\\n margin: 0 0 0 5px;\\n cursor: pointer;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add {\\n display: flex;\\n flex: 0 1 3px;\\n margin: 9px 12px 0 5px;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n background: #666;\\n position: relative;\\n height: 10px;\\n width: 2px;\\n transition: transform .2s;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus:after {\\n background: #666;\\n content: \\\"\\\";\\n position: absolute;\\n height: 2px;\\n width: 10px;\\n left: -4px;\\n top: 4px;\\n}\\n\\n.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross {\\n transform: rotate(45deg);\\n}\\n\\n.ss-main .ss-content {\\n position: absolute;\\n width: 100%;\\n margin: -1px 0 0;\\n box-sizing: border-box;\\n border: 1px solid #dcdee2;\\n z-index: 1010;\\n background-color: #fff;\\n transform-origin: center top;\\n transition: transform .2s,opacity .2s;\\n opacity: 0;\\n transform: scaleY(0);\\n}\\n\\n.ss-main .ss-content.ss-open {\\n display: block;\\n opacity: 1;\\n transform: scaleY(1);\\n}\\n\\n.ss-main .ss-content .ss-search {\\n display: flex;\\n flex-direction: row;\\n padding: 8px 10px;\\n}\\n\\n.ss-main .ss-content .ss-search.ss-hide,\\n.ss-main .ss-content .ss-search.ss-hide input {\\n height: 0;\\n opacity: 0;\\n padding: 0;\\n margin: 0;\\n}\\n\\n.ss-main .ss-content .ss-search input {\\n display: inline-flex;\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n flex: 1 1 auto;\\n width: 100%;\\n min-width: 0;\\n height: 30px;\\n padding: 5px 10px;\\n margin: 0;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n background-color: #fff;\\n outline: 0;\\n text-align: left;\\n box-sizing: border-box;\\n -webkit-box-sizing: border-box;\\n -webkit-appearance: textfield;\\n}\\n\\n.ss-main .ss-content .ss-search input::placeholder {\\n color: #b3b3b3;\\n}\\n\\n.ss-main .ss-content .ss-search input:focus {\\n box-shadow: 0 0 5px #5897fb;\\n}\\n\\n.ss-main .ss-content .ss-search .ss-addable {\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n font-size: 22px;\\n font-weight: 700;\\n flex: 0 0 30px;\\n height: 30px;\\n margin: 0 0 0 8px;\\n border: 1px solid #dcdee2;\\n border-radius: 4px;\\n box-sizing: border-box;\\n}\\n\\n.ss-main .ss-content .ss-addable {\\n padding-top: 0;\\n}\\n\\n.ss-main .ss-content .ss-list {\\n max-height: 200px;\\n overflow-x: hidden;\\n overflow-y: auto;\\n text-align: left;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-optgroup .ss-optgroup-label {\\n padding: 6px 10px;\\n font-weight: 700;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-optgroup .ss-option {\\n padding: 6px 6px 6px 25px;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option {\\n padding: 6px 10px;\\n cursor: pointer;\\n user-select: none;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option * {\\n display: inline-block;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-highlighted,\\n.ss-main .ss-content .ss-list .ss-option:hover {\\n color: #fff;\\n background-color: #5897fb;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-disabled {\\n cursor: default;\\n color: #dcdee2;\\n background-color: #fff;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option.ss-hide {\\n display: none;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option .ss-search-highlight {\\n background-color: #fff70062;\\n}\\n\\n/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */\\n\\n/* Document\\n ========================================================================== */\\n\\n/**\\n * 1. Correct the line height in all browsers.\\n * 2. Prevent adjustments of font size after orientation changes in iOS.\\n */\\n\\nhtml {\\n line-height: 1.15;\\n /* 1 */\\n -webkit-text-size-adjust: 100%;\\n /* 2 */\\n}\\n\\n/* Sections\\n ========================================================================== */\\n\\n/**\\n * Remove the margin in all browsers.\\n */\\n\\nbody {\\n margin: 0;\\n}\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\n\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n}\\n\\n/* Grouping content\\n ========================================================================== */\\n\\n/**\\n * 1. Add the correct box sizing in Firefox.\\n * 2. Show the overflow in Edge and IE.\\n */\\n\\nhr {\\n box-sizing: content-box;\\n /* 1 */\\n height: 0;\\n /* 1 */\\n overflow: visible;\\n /* 2 */\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\npre {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */\\n}\\n\\n/* Text-level semantics\\n ========================================================================== */\\n\\n/**\\n * Remove the gray background on active links in IE 10.\\n */\\n\\na {\\n background-color: transparent;\\n}\\n\\n/**\\n * 1. Remove the bottom border in Chrome 57-\\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n */\\n\\nabbr[title] {\\n border-bottom: none;\\n /* 1 */\\n text-decoration: underline;\\n /* 2 */\\n text-decoration: underline dotted;\\n /* 2 */\\n}\\n\\n/**\\n * Add the correct font weight in Chrome, Edge, and Safari.\\n */\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\ncode,\\nkbd,\\nsamp {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */\\n}\\n\\n/**\\n * Add the correct font size in all browsers.\\n */\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/**\\n * Prevent `sub` and `sup` elements from affecting the line height in\\n * all browsers.\\n */\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\n/* Embedded content\\n ========================================================================== */\\n\\n/**\\n * Remove the border on images inside links in IE 10.\\n */\\n\\nimg {\\n border-style: none;\\n}\\n\\n/* Forms\\n ========================================================================== */\\n\\n/**\\n * 1. Change the font styles in all browsers.\\n * 2. Remove the margin in Firefox and Safari.\\n */\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit;\\n /* 1 */\\n font-size: 100%;\\n /* 1 */\\n line-height: 1.15;\\n /* 1 */\\n margin: 0;\\n /* 2 */\\n}\\n\\n/**\\n * Show the overflow in IE.\\n * 1. Show the overflow in Edge.\\n */\\n\\nbutton,\\ninput {\\n /* 1 */\\n overflow: visible;\\n}\\n\\n/**\\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\\n * 1. Remove the inheritance of text transform in Firefox.\\n */\\n\\nbutton,\\nselect {\\n /* 1 */\\n text-transform: none;\\n}\\n\\n/**\\n * Correct the inability to style clickable types in iOS and Safari.\\n */\\n\\nbutton,\\n[type=\\\"button\\\"],\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n -webkit-appearance: button;\\n}\\n\\n/**\\n * Remove the inner border and padding in Firefox.\\n */\\n\\nbutton::-moz-focus-inner,\\n[type=\\\"button\\\"]::-moz-focus-inner,\\n[type=\\\"reset\\\"]::-moz-focus-inner,\\n[type=\\\"submit\\\"]::-moz-focus-inner {\\n border-style: none;\\n padding: 0;\\n}\\n\\n/**\\n * Restore the focus styles unset by the previous rule.\\n */\\n\\nbutton:-moz-focusring,\\n[type=\\\"button\\\"]:-moz-focusring,\\n[type=\\\"reset\\\"]:-moz-focusring,\\n[type=\\\"submit\\\"]:-moz-focusring {\\n outline: 1px dotted ButtonText;\\n}\\n\\n/**\\n * Correct the padding in Firefox.\\n */\\n\\nfieldset {\\n padding: 0.35em 0.75em 0.625em;\\n}\\n\\n/**\\n * 1. Correct the text wrapping in Edge and IE.\\n * 2. Correct the color inheritance from `fieldset` elements in IE.\\n * 3. Remove the padding so developers are not caught out when they zero out\\n * `fieldset` elements in all browsers.\\n */\\n\\nlegend {\\n box-sizing: border-box;\\n /* 1 */\\n color: inherit;\\n /* 2 */\\n display: table;\\n /* 1 */\\n max-width: 100%;\\n /* 1 */\\n padding: 0;\\n /* 3 */\\n white-space: normal;\\n /* 1 */\\n}\\n\\n/**\\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n */\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n/**\\n * Remove the default vertical scrollbar in IE 10+.\\n */\\n\\ntextarea {\\n overflow: auto;\\n}\\n\\n/**\\n * 1. Add the correct box sizing in IE 10.\\n * 2. Remove the padding in IE 10.\\n */\\n\\n[type=\\\"checkbox\\\"],\\n[type=\\\"radio\\\"] {\\n box-sizing: border-box;\\n /* 1 */\\n padding: 0;\\n /* 2 */\\n}\\n\\n/**\\n * Correct the cursor style of increment and decrement buttons in Chrome.\\n */\\n\\n[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/**\\n * 1. Correct the odd appearance in Chrome and Safari.\\n * 2. Correct the outline style in Safari.\\n */\\n\\n[type=\\\"search\\\"] {\\n -webkit-appearance: textfield;\\n /* 1 */\\n outline-offset: -2px;\\n /* 2 */\\n}\\n\\n/**\\n * Remove the inner padding in Chrome and Safari on macOS.\\n */\\n\\n[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/**\\n * 1. Correct the inability to style clickable types in iOS and Safari.\\n * 2. Change font properties to `inherit` in Safari.\\n */\\n\\n::-webkit-file-upload-button {\\n -webkit-appearance: button;\\n /* 1 */\\n font: inherit;\\n /* 2 */\\n}\\n\\n/* Interactive\\n ========================================================================== */\\n\\n/*\\n * Add the correct display in Edge, IE 10+, and Firefox.\\n */\\n\\ndetails {\\n display: block;\\n}\\n\\n/*\\n * Add the correct display in all browsers.\\n */\\n\\nsummary {\\n display: list-item;\\n}\\n\\n/* Misc\\n ========================================================================== */\\n\\n/**\\n * Add the correct display in IE 10+.\\n */\\n\\ntemplate {\\n display: none;\\n}\\n\\n/**\\n * Add the correct display in IE 10.\\n */\\n\\n[hidden] {\\n display: none;\\n}\\n\\n/* ==========================================================================\\n #RESET\\n ========================================================================== */\\n\\n/**\\n * A very simple reset that sits on top of Normalize.css.\\n */\\n\\nbody,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nblockquote,\\np,\\npre,\\ndl,\\ndd,\\nol,\\nul,\\nfigure,\\nhr,\\nfieldset,\\nlegend {\\n margin: 0;\\n padding: 0;\\n}\\n\\n/**\\n * Remove trailing margins from nested lists.\\n */\\n\\nli > ol,\\nli > ul {\\n margin-bottom: 0;\\n}\\n\\n/**\\n * Remove default table spacing.\\n */\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\n/**\\n * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;`\\n * on fieldsets.\\n */\\n\\nfieldset {\\n min-width: 0;\\n /* [1] */\\n border: 0;\\n}\\n\\n/* ==========================================================================\\n #SHARED\\n ========================================================================== */\\n\\n/**\\n * Shared declarations for certain elements.\\n */\\n\\naddress,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nblockquote,\\npre,\\ndl,\\nol,\\nul,\\nhr,\\ntable,\\nfieldset {\\n margin-bottom: 2rem;\\n}\\n\\naddress:last-child,\\nh1:last-child,\\nh2:last-child,\\nh3:last-child,\\nh4:last-child,\\nh5:last-child,\\nh6:last-child,\\nblockquote:last-child,\\npre:last-child,\\ndl:last-child,\\nol:last-child,\\nul:last-child,\\nhr:last-child,\\ntable:last-child,\\nfieldset:last-child {\\n margin-bottom: 0;\\n}\\n\\n/**\\n * Consistent indentation for lists.\\n */\\n\\ndd,\\nol,\\nul {\\n margin-left: 2rem;\\n}\\n\\n/* ==========================================================================\\n #PRINT\\n ========================================================================== */\\n\\n/**\\n * Very crude, reset-like styles taken from the HTML5 Boilerplate:\\n * https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/css.md#print-styles\\n * https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L205-L282\\n */\\n\\n@media print {\\n /**\\n * 1. Black prints faster: http://www.sanbeiji.com/archives/953\\n */\\n\\n *,\\n *::before,\\n *::after {\\n background: transparent !important;\\n color: #000 !important;\\n /* [1] */\\n box-shadow: none !important;\\n text-shadow: none !important;\\n }\\n\\n a,\\n a:visited {\\n text-decoration: underline;\\n }\\n\\n a[href]::after {\\n content: \\\" (\\\" attr(href) \\\")\\\";\\n }\\n\\n abbr[title]::after {\\n content: \\\" (\\\" attr(title) \\\")\\\";\\n }\\n\\n /**\\n * Don’t show links that are fragment identifiers, or use the `javascript:`\\n * pseudo protocol.\\n */\\n\\n a[href^=\\\"#\\\"]::after,\\n a[href^=\\\"javascript:\\\"]::after {\\n content: \\\"\\\";\\n }\\n\\n pre,\\n blockquote {\\n border: 1px solid #999;\\n page-break-inside: avoid;\\n }\\n\\n /**\\n * Printing Tables: http://css-discuss.incutio.com/wiki/Printing_Tables\\n */\\n\\n thead {\\n display: table-header-group;\\n }\\n\\n tr,\\n img {\\n page-break-inside: avoid;\\n }\\n\\n img {\\n max-width: 100% !important;\\n }\\n\\n p,\\n h2,\\n h3 {\\n orphans: 3;\\n widows: 3;\\n }\\n\\n h2,\\n h3 {\\n page-break-after: avoid;\\n }\\n}\\n\\n/* ==========================================================================\\n #BLOCK\\n ========================================================================== */\\n\\n/**\\n * Stacked image-with-text object. A simple abstraction to cover a very commonly\\n * occurring design pattern.\\n */\\n\\n/* ==========================================================================\\n #BOX\\n ========================================================================== */\\n\\n/**\\n * The box object simply boxes off content. Extend with cosmetic styles in the\\n * Components layer.\\n */\\n\\n/* ==========================================================================\\n #LIST\\n ========================================================================== */\\n\\n/**\\n * Strip list-like appearance from lists by removing their bullets and any\\n * indentation.\\n */\\n\\n/**\\n * The list-inline object simply displays a list of items in one line.\\n */\\n\\nblockquote {\\n border-left: #979797 5px solid;\\n padding-left: 1.5rem;\\n}\\n\\ninput[type='tel'],\\ninput[type='text'],\\ninput[type='email'],\\ninput[type='number'],\\ninput[type='search'],\\ntextarea,\\nselect {\\n appearance: none;\\n background-color: #fff;\\n border: 0;\\n border-bottom: #e6e6e6 4px solid;\\n border-radius: 0;\\n color: #181d25;\\n display: block;\\n padding: 0.5rem 0rem;\\n font-size: 1rem;\\n line-height: 1.5;\\n transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n resize: none;\\n outline: 0;\\n width: 100%;\\n}\\n\\ninput[type='tel']:hover,\\ninput[type='tel']:focus,\\ninput[type='text']:hover,\\ninput[type='text']:focus,\\ninput[type='email']:hover,\\ninput[type='email']:focus,\\ninput[type='number']:hover,\\ninput[type='number']:focus,\\ninput[type='search']:hover,\\ninput[type='search']:focus,\\ntextarea:hover,\\ntextarea:focus,\\nselect:hover,\\nselect:focus {\\n border-color: #3fd8b6;\\n}\\n\\ninput[type='tel']::placeholder,\\ninput[type='text']::placeholder,\\ninput[type='email']::placeholder,\\ninput[type='number']::placeholder,\\ninput[type='search']::placeholder,\\ntextarea::placeholder,\\nselect::placeholder {\\n color: #979797;\\n}\\n\\ninput[type='checkbox'] {\\n display: block;\\n margin-top: -0.25rem;\\n position: relative;\\n visibility: hidden;\\n height: 1.125rem;\\n width: 1.125rem;\\n}\\n\\ninput[type='checkbox']::after {\\n content: '';\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: 1.125rem;\\n border: #000 2px solid;\\n visibility: visible;\\n position: absolute;\\n transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: 0.125rem;\\n}\\n\\ninput[type='checkbox']:checked::after {\\n background-color: #000;\\n background-image: url(\\\"data:image/svg+xml;charset=utf-8;base64,PHN2ZyBpZD0iaWNvbi1jaGVjayIgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIvPg0KPC9zdmc+\\\");\\n}\\n\\ninput[type='checkbox']:checked:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\ninput[type='checkbox'] + label {\\n padding-left: 0.5rem;\\n transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\ninput[type='checkbox']:hover::after {\\n border-color: #3fd8b6;\\n}\\n\\ninput[type='checkbox']:hover + label {\\n color: #3fd8b6;\\n}\\n\\ninput[type='radio'] {\\n display: block;\\n margin-top: -0.25rem;\\n position: relative;\\n visibility: hidden;\\n height: 1.125rem;\\n width: 1.125rem;\\n}\\n\\ninput[type='radio']::after {\\n content: '';\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: 1.125rem;\\n border: #000 2px solid;\\n visibility: visible;\\n position: absolute;\\n transition: background 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: 100%;\\n}\\n\\ninput[type='radio']::before {\\n content: '';\\n background-color: #000;\\n border-radius: 100%;\\n display: block;\\n visibility: visible;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n opacity: 0;\\n transform: translate(-50%, -50%) scale(0.01);\\n transition: background-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), opacity 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n height: 0.5rem;\\n width: 0.5rem;\\n z-index: 1;\\n}\\n\\ninput[type='radio']:checked::before {\\n opacity: 1;\\n transform: translate(-50%, -50%);\\n}\\n\\ninput[type='radio'] + label {\\n padding-left: 0.5rem;\\n transition: color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\ninput[type='radio']:hover::after {\\n border-color: #3fd8b6;\\n}\\n\\ninput[type='radio']:hover::before {\\n background-color: #3fd8b6;\\n}\\n\\ninput[type='radio']:hover + label {\\n color: #3fd8b6;\\n}\\n\\n/* ==========================================================================\\n #IMAGES\\n ========================================================================== */\\n\\n/**\\n * 1. Fluid images for responsive purposes.\\n * 2. Offset `alt` text from surrounding copy.\\n * 3. Setting `vertical-align` removes the whitespace that appears under `img`\\n * elements when they are dropped into a page as-is. Safer alternative to\\n * using `display: block;`.\\n */\\n\\npicture {\\n display: block;\\n}\\n\\nimg {\\n height: auto;\\n /* [1] */\\n max-width: 100%;\\n /* [1] */\\n font-style: italic;\\n /* [2] */\\n vertical-align: middle;\\n /* [3] */\\n}\\n\\n/* ==========================================================================\\n #PAGE\\n ========================================================================== */\\n\\nhtml {\\n box-sizing: border-box;\\n overflow-y: scroll;\\n min-height: 100%;\\n}\\n\\nhtml *,\\nhtml *::before,\\nhtml *::after {\\n box-sizing: inherit;\\n}\\n\\nbody {\\n overflow: hidden;\\n}\\n\\narticle {\\n position: relative;\\n}\\n\\n/* ==========================================================================\\n #TABLES\\n ========================================================================== */\\n\\n/**\\n * 1. Ensure tables fill up as much space as possible.\\n */\\n\\ntable {\\n width: 100%;\\n /* [1] */\\n}\\n\\nhtml {\\n color: #181d25;\\n line-height: 1.75;\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1rem;\\n font-weight: 400;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n@media (min-width: 1801px) {\\n html {\\n font-size: 1.125rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n body {\\n font-size: 1.125rem;\\n }\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\np,\\nul,\\nol,\\nspan {\\n font-variant-ligatures: common-ligatures;\\n font-feature-settings: 'liga', 'clig';\\n}\\n\\nh1:first-child,\\nh2:first-child,\\nh3:first-child,\\nh4:first-child,\\nh5:first-child,\\nh6:first-child,\\np:first-child,\\nul:first-child,\\nol:first-child,\\nspan:first-child {\\n margin-top: 0;\\n}\\n\\nh1:last-child,\\nh2:last-child,\\nh3:last-child,\\nh4:last-child,\\nh5:last-child,\\nh6:last-child,\\np:last-child,\\nul:last-child,\\nol:last-child,\\nspan:last-child {\\n margin-bottom: 0;\\n}\\n\\nh1 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 2rem;\\n font-weight: 400;\\n line-height: 1.05;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n h1 {\\n font-size: 2.75rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n h1 {\\n font-size: 3.5rem;\\n }\\n}\\n\\nh2 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.75rem;\\n font-weight: 400;\\n line-height: 1.05;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n h2 {\\n font-size: 2.125rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n h2 {\\n font-size: 2.5rem;\\n }\\n}\\n\\nh3 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 300;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n h3 {\\n font-size: 1.75rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n h3 {\\n font-size: 2rem;\\n }\\n}\\n\\nh4 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n h4 {\\n font-size: 1.5rem;\\n }\\n}\\n\\nh5 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n h5 {\\n font-size: 1.25rem;\\n }\\n}\\n\\nh6 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1rem;\\n font-weight: 400;\\n letter-spacing: 0.0625rem;\\n line-height: 1.25;\\n text-transform: uppercase;\\n margin-bottom: 1.5rem;\\n}\\n\\np {\\n margin: 2rem 0rem;\\n}\\n\\na {\\n color: #3fd8b6;\\n text-decoration: none;\\n transition: color 0.4s ease;\\n}\\n\\na:hover {\\n color: #2bd3ad;\\n}\\n\\na:active {\\n color: #26be9c;\\n}\\n\\n.accordion {\\n text-align: left;\\n}\\n\\n.accordion__item {\\n border-top: #979797 2px solid;\\n display: flex;\\n padding: 1.5rem 0rem;\\n display: block;\\n}\\n\\n.accordion__item__inner {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n}\\n\\n.accordion__header {\\n cursor: pointer;\\n display: flex;\\n justify-content: space-between;\\n width: 100%;\\n}\\n\\n.accordion__header__toggle {\\n flex-shrink: 0;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-left: 0.5rem;\\n transform: scaleY(-1);\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n}\\n\\n.accordion__item.is-active .accordion__header__toggle {\\n transform: scaleY(1);\\n}\\n\\n.accordion__header__toggle .icon {\\n max-height: 100%;\\n max-width: 100%;\\n}\\n\\n.accordion__heading {\\n margin-bottom: 0;\\n}\\n\\n.accordion__content {\\n display: none;\\n overflow: hidden;\\n padding: 0.5rem 0rem 0rem;\\n transform: scale(0.9);\\n transition: transform 0.3s ease;\\n will-change: transform;\\n}\\n\\n.accordion__item.is-active .accordion__content {\\n transform: scale(1);\\n}\\n\\n.archive__featured {\\n padding-top: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .archive__featured {\\n padding-top: 5rem;\\n }\\n}\\n\\n.archive__list {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center;\\n padding-top: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .archive__list {\\n justify-content: flex-start;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .archive__list {\\n padding-top: 5rem;\\n }\\n}\\n\\n.index-data .filter {\\n padding-top: 2rem;\\n}\\n\\n@media (max-width: 600px) {\\n .index-data .filter {\\n margin: 0 2rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .index-data .filter {\\n padding-top: 2.5rem;\\n }\\n}\\n\\n.bg-img {\\n background-position: 50%;\\n background-repeat: no-repeat;\\n background-size: cover;\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 0;\\n}\\n\\n.image-banner {\\n overflow: hidden;\\n min-height: 20rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) {\\n .image-banner {\\n min-height: 30rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .image-banner {\\n min-height: 40rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .image-banner {\\n min-height: 50rem;\\n }\\n}\\n\\n.image-banner picture,\\n.image-banner img {\\n width: 100%;\\n}\\n\\n.image-banner picture::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.image-banner .banner__image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.image-banner .banner__image .media {\\n padding-bottom: 0;\\n height: 100%;\\n}\\n\\n.image-banner .component__inner {\\n color: #fff;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n position: relative;\\n}\\n\\n.button,\\n[type=button],\\n[type=reset],\\n[type=submit] {\\n background-color: #3fd8b6;\\n color: #fff;\\n display: inline-block;\\n font-weight: 700;\\n line-height: 1.125;\\n padding: 1rem 3rem;\\n text-decoration: none;\\n transition: all 0.4s ease;\\n min-width: 12.5rem;\\n text-align: center;\\n}\\n\\n.button:hover,\\n[type=button]:hover,\\n[type=reset]:hover,\\n[type=submit]:hover {\\n background-color: #2bd3ad;\\n color: #fff;\\n}\\n\\n.button:active,\\n[type=button]:active,\\n[type=reset]:active,\\n[type=submit]:active {\\n background-color: #26be9c;\\n color: #fff;\\n}\\n\\n.button.button--text,\\n[type=button].button--text,\\n[type=reset].button--text,\\n[type=submit].button--text {\\n background-color: transparent;\\n border: 0;\\n border-radius: 0;\\n color: #3fd8b6;\\n padding: 0;\\n outline: none !important;\\n}\\n\\n.button.button--text:hover,\\n[type=button].button--text:hover,\\n[type=reset].button--text:hover,\\n[type=submit].button--text:hover {\\n background-color: transparent;\\n color: #2bd3ad;\\n}\\n\\n.button.button--text:active,\\n[type=button].button--text:active,\\n[type=reset].button--text:active,\\n[type=submit].button--text:active {\\n background-color: transparent;\\n color: #26be9c;\\n}\\n\\n.links {\\n margin-top: 3.5rem;\\n}\\n\\n.links:first-child {\\n margin-top: 0;\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block .columns {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n}\\n\\n.columns-block .columns.left-borders .column {\\n border-left: 4px solid #3fd8b6;\\n padding-left: 2rem;\\n}\\n\\n.columns-block .column {\\n flex-shrink: 0;\\n flex-grow: 0;\\n margin-bottom: 2rem;\\n text-align: left;\\n width: 100%;\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block .column {\\n margin-bottom: 4rem;\\n }\\n}\\n\\n.columns-block .column__icon {\\n line-height: 0;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block .column {\\n margin-right: 2rem;\\n }\\n}\\n\\n.columns-block .column .heading,\\n.columns-block .column__number {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block .column .heading,\\n .columns-block .column__number {\\n font-size: 1.5rem;\\n }\\n}\\n\\n.columns-block .column .heading {\\n margin-bottom: 0;\\n}\\n\\n.columns-block .column .heading + p {\\n margin-top: 2rem;\\n}\\n\\n.columns-block[data-columns-per-row=\\\"two\\\"] .column {\\n flex-basis: calc(50% - 1rem);\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"two\\\"] .column:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"two\\\"] .column {\\n flex-basis: calc(50% - 2rem);\\n margin-right: 4rem;\\n }\\n}\\n\\n.columns-block[data-columns-per-row=\\\"three\\\"] .column {\\n flex-basis: calc(33.33333% - 1.33333rem);\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"three\\\"] .column:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"three\\\"] .column {\\n flex-basis: calc(33.33333% - 4rem);\\n margin-right: 6rem;\\n }\\n}\\n\\n.columns-block[data-columns-per-row=\\\"four\\\"] .column {\\n flex-basis: calc(50% - 1rem);\\n}\\n\\n@media (min-width: 601px) {\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column {\\n flex-basis: calc(25% - 2rem);\\n }\\n\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(2n) {\\n margin-right: 2rem;\\n }\\n\\n .columns-block[data-columns-per-row=\\\"four\\\"] .column:nth-of-type(4n) {\\n margin-right: 0;\\n }\\n}\\n\\n.columns-block.u-text-align--center .columns {\\n justify-content: center;\\n}\\n\\n.columns-block.u-text-align--center .columns .column {\\n text-align: center;\\n}\\n\\n.columns-block.u-text-align--right .columns {\\n justify-content: flex-end;\\n}\\n\\n.columns-block.u-text-align--right .columns .column {\\n text-align: right;\\n}\\n\\n.company__name {\\n margin-bottom: 1rem;\\n}\\n\\n.company__tagline {\\n max-width: 40rem;\\n}\\n\\n.component {\\n position: relative;\\n}\\n\\n.component .bg-img {\\n z-index: -1;\\n}\\n\\n.component__inner {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .component__inner {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .component__inner {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.component__inner > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.slider .component__inner {\\n padding-right: 0;\\n padding-left: 0;\\n}\\n\\n.gallery .component__inner {\\n padding-right: 0;\\n padding-bottom: 0;\\n padding-left: 0;\\n}\\n\\n.component__content {\\n margin: 0 auto;\\n max-width: 40rem;\\n}\\n\\n.component__intro > *:last-child {\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 901px) {\\n .component__intro > *:last-child {\\n margin-bottom: 5rem;\\n }\\n}\\n\\n.component.u-background-color--light {\\n background-color: #fff;\\n}\\n\\n.component.u-background-color--dark {\\n background-color: #f9f9fa;\\n}\\n\\n.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner,\\n.component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .component__inner,\\n.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .featured-blocks__inner,\\n.component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .featured-blocks__inner,\\n.component.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .contact-info__content,\\n.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .contact-info__content {\\n padding-top: 0;\\n}\\n\\n@media (max-width: 600px) {\\n .component.u-background-color--light.image-banner + .component.u-background-color--light.u-padding-collapse .component__inner,\\n .component.u-background-color--dark.image-banner + .component.u-background-color--dark.u-padding-collapse .component__inner,\\n .component.component.u-background-color--light.u-padding-collapse + .u-background-color--light.tiles .component__inner,\\n .component.component.u-background-color--dark.u-padding-collapse + .u-background-color--dark.tiles .component__inner {\\n padding-top: 0;\\n }\\n}\\n\\n.component.columns-block.u-text-align--center .component__content,\\n.component.featured-blocks.u-text-align--center .component__content,\\n.component.featured-posts.u-text-align--center .component__content,\\n.component.gallery.u-text-align--center .component__content,\\n.component.video.u-text-align--center .component__content,\\n.component.table.u-text-align--center .component__content,\\n.component.team.u-text-align--center .component__content,\\n.component.slider.u-text-align--center .component__content {\\n text-align: center;\\n}\\n\\n.component.columns-block.u-text-align--left .component__content,\\n.component.featured-blocks.u-text-align--left .component__content,\\n.component.featured-posts.u-text-align--left .component__content,\\n.component.gallery.u-text-align--left .component__content,\\n.component.video.u-text-align--left .component__content,\\n.component.table.u-text-align--left .component__content,\\n.component.team.u-text-align--left .component__content,\\n.component.slider.u-text-align--left .component__content {\\n margin-left: 0;\\n}\\n\\n.component.columns-block.u-text-align--right .component__content,\\n.component.featured-blocks.u-text-align--right .component__content,\\n.component.featured-posts.u-text-align--right .component__content,\\n.component.gallery.u-text-align--right .component__content,\\n.component.video.u-text-align--right .component__content,\\n.component.table.u-text-align--right .component__content,\\n.component.team.u-text-align--right .component__content,\\n.component.slider.u-text-align--right .component__content {\\n margin-right: 0;\\n text-align: right;\\n}\\n\\n.component.has-background-image__inner {\\n position: relative;\\n z-index: 1;\\n}\\n\\n.component.u-background-color--light + .component.gallery.u-background-color--light,\\n.component.u-background-color--dark + .component.gallery.u-background-color--dark,\\n.component.u-background-color--light + .component.slider.u-background-color--light,\\n.component.u-background-color--dark + .component.slider.u-background-color--dark {\\n padding-top: 0;\\n}\\n\\n.component.gallery.u-background-color--light + .component.u-background-color--light,\\n.component.gallery.u-background-color--dark + .component.u-background-color--dark {\\n margin-top: -0.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .component.gallery.u-background-color--light + .component.u-background-color--light,\\n .component.gallery.u-background-color--dark + .component.u-background-color--dark {\\n margin-top: -0.75rem;\\n }\\n}\\n\\n.u-background-color--light {\\n background-color: #fff;\\n}\\n\\n.u-background-color--dark {\\n background-color: #f9f9fa;\\n}\\n\\n@media (min-width: 601px) {\\n .contact {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .contact__column {\\n flex: 0 0 50%;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .contact__column {\\n flex: 0 0 100%;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .contact__column {\\n flex: 0 0 50%;\\n }\\n}\\n\\n.contact__row {\\n margin-bottom: 2rem;\\n}\\n\\n.contact__address,\\n.contact__hours,\\n.contact__phone,\\n.contact__email {\\n display: flex;\\n}\\n\\n.contact__address .icon,\\n.contact__hours .icon,\\n.contact__phone .icon,\\n.contact__email .icon {\\n margin-right: 0.5rem;\\n margin-top: 5px;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__wrapper {\\n display: flex;\\n }\\n}\\n\\n.contact-info__content {\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__content {\\n flex: 1 0 50%;\\n padding-top: 4rem;\\n padding-bottom: 4rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .contact-info__content {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.contact-info__content .gform_wrapper {\\n margin: 4rem 0;\\n}\\n\\n@media (min-width: 601px) {\\n .contact-info__content .gform_fields {\\n display: flex;\\n justify-content: space-between;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .contact-info__content .gform_fields .gfield {\\n flex: 0 0 100%;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .contact-info__content .gform_fields .gf_left_half,\\n .contact-info__content .gform_fields .gf_right_half {\\n flex: 0 0 48%;\\n }\\n}\\n\\n.contact-info__content .gform_fields textarea {\\n height: 8rem;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__map {\\n flex: 0 1 50%;\\n }\\n}\\n\\n.contact-info__map .map__canvas {\\n height: 500px;\\n width: 100%;\\n}\\n\\n@media (min-width: 901px) {\\n .contact-info__map .map__canvas {\\n height: 100%;\\n }\\n}\\n\\n.contact-info__map .map__canvas .gm-style-iw {\\n max-width: 300px;\\n}\\n\\n.contact-info__map .map__canvas .gm-style-iw img {\\n margin-bottom: 1rem;\\n}\\n\\n.contact-info__map .map__canvas .gm-style-iw a {\\n display: block;\\n margin-top: 1rem;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"],\\n.home .hero[data-featured-bar=\\\"side\\\"] {\\n display: flex;\\n flex-direction: column;\\n height: calc(100vh - 4rem);\\n min-height: 40rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"],\\n .home .hero[data-featured-bar=\\\"side\\\"] {\\n height: calc(100vh - 7rem);\\n min-height: 45rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"],\\n .home .hero[data-featured-bar=\\\"side\\\"] {\\n min-height: 55rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n.home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n flex: 1 1 auto;\\n height: auto;\\n min-height: 25rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n .home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n min-height: 30rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .hero__wrap,\\n .home .hero[data-featured-bar=\\\"side\\\"] .hero__wrap {\\n min-height: 40rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar {\\n flex: 0 0 auto;\\n display: flex;\\n justify-content: space-around;\\n align-items: center;\\n padding: 1.5rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar {\\n padding: 1.5rem 2rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .col + .col,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .col + .col {\\n margin-left: 1rem;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .featured-content-3,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .featured-content-3 {\\n display: none;\\n}\\n\\n@media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .featured-content-3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar .featured-content-3 {\\n display: block;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n display: none;\\n}\\n\\n@media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n display: block;\\n flex: 0 0 40%;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post {\\n flex: 0 0 50%;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser {\\n margin-right: 0;\\n width: 100%;\\n flex-basis: 100%;\\n}\\n\\n@media (min-width: 601px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser {\\n display: flex;\\n align-items: center;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .meta,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .meta {\\n display: none;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .post__content,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .post__content {\\n padding-top: 0;\\n margin-right: 1rem;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container {\\n order: 2;\\n position: relative;\\n width: 100%;\\n padding-bottom: 2rem;\\n display: none;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container {\\n display: block;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::before,\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::after,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::before,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::after {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n content: \\\"\\\";\\n width: 100%;\\n background-color: #ececec;\\n height: 5px;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media-container::after,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media-container::after {\\n background-color: #3fd8b6;\\n width: 80%;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media {\\n box-shadow: 0 0 20px #cecece;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .media[data-ratio=\\\"1:1\\\"],\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__post .post--teaser .media[data-ratio=\\\"1:1\\\"] {\\n padding-bottom: 65%;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h2,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h2 {\\n text-transform: uppercase;\\n font-size: 0.75rem;\\n opacity: 0.75;\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h3,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h3 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content h3,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content h3 {\\n font-size: 1.25rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content p,\\n.home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content p {\\n display: none;\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__content p,\\n .home .hero[data-featured-bar=\\\"side\\\"] .featured-bar__content p {\\n display: block;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] {\\n min-height: 65rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar {\\n padding: 2rem 5rem;\\n }\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar .col + .col {\\n margin-left: 2rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post {\\n max-width: 750px;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post {\\n max-width: 800px;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .home .hero[data-featured-bar=\\\"bottom\\\"] .featured-bar__post .post--teaser .post__content {\\n margin-right: 3rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .hero.home[data-featured-bar=\\\"side\\\"] {\\n flex-direction: row;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar {\\n flex-direction: column;\\n max-width: 24rem;\\n height: 100%;\\n padding: 2rem 4rem;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar__content {\\n width: 100%;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .featured-bar .col + .col {\\n margin-left: 0;\\n margin-top: 2rem;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .post--teaser {\\n flex-direction: column;\\n flex-basis: 100%;\\n margin-right: 0;\\n }\\n\\n .hero.home[data-featured-bar=\\\"side\\\"] .post--teaser .media {\\n margin-top: 3rem;\\n }\\n}\\n\\n.home .hero[data-nav-buttons=\\\"true\\\"] .featured-bar {\\n margin-bottom: 50px;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero[data-nav-buttons=\\\"true\\\"] .featured-bar {\\n margin-bottom: 0;\\n }\\n}\\n\\n.featured-blocks .block {\\n width: 100%;\\n}\\n\\n.featured-blocks .block a {\\n display: block;\\n position: relative;\\n}\\n\\n.featured-blocks .block a .block__image {\\n position: relative;\\n}\\n\\n.featured-blocks .block a .block__image::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.featured-blocks .block a .block__image:hover::after {\\n opacity: 0.3;\\n}\\n\\n.featured-blocks .block a .block__content {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n padding: 2rem 3rem;\\n color: #fff;\\n z-index: 2;\\n}\\n\\n@media (min-width: 601px) {\\n .featured-blocks .block a .block__content {\\n padding: 3.5rem 6rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks .block a .block__content {\\n padding: 2rem 3rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks .block a .block__content {\\n padding: 2.75rem 4.5rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .featured-blocks .block a .block__content {\\n padding: 3.5rem 6rem;\\n }\\n}\\n\\n.featured-blocks .block a .block__content h2 {\\n font-family: \\\"proxima nova\\\", \\\"helvetica neue\\\", helvetica, arial, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 300;\\n line-height: 1.25;\\n margin-bottom: 1.5rem;\\n margin-bottom: 0;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks .block a .block__content h2 {\\n font-size: 1.75rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks .block a .block__content h2 {\\n font-size: 2rem;\\n }\\n}\\n\\n.featured-blocks .block a .block__content h2 + p {\\n margin-top: 0.75rem;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks .featured-blocks-slider-pagination {\\n display: none;\\n }\\n}\\n\\n.featured-blocks__list {\\n margin-left: -2rem;\\n margin-right: -2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks__list {\\n margin-left: -6rem;\\n margin-right: -6rem;\\n }\\n}\\n\\n.featured-blocks .component__inner {\\n padding-bottom: 0;\\n}\\n\\n.featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 6rem;\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 9rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .component__inner {\\n padding-top: 12.5rem;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .featured-blocks[data-blocks=\\\"2\\\"] .block {\\n flex: 0 0 50%;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .featured-blocks[data-blocks=\\\"3\\\"] .block {\\n flex: 0 0 33.333%;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .featured-blocks[data-blocks=\\\"4\\\"] .block {\\n flex: 0 0 25%;\\n }\\n}\\n\\n.filter {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n white-space: nowrap;\\n font-size: 1.25rem;\\n line-height: 1.5;\\n}\\n\\n.filter__options {\\n display: inline-flex;\\n margin-left: 0;\\n list-style: none;\\n border-left: #181d25 2px solid;\\n margin-bottom: 0;\\n}\\n\\n.filter__option {\\n color: #979797;\\n padding: 0rem 1rem;\\n}\\n\\n.filter__option.is-active {\\n color: #181d25;\\n}\\n\\n.priority-nav {\\n white-space: nowrap;\\n}\\n\\n.priority-nav__wrapper {\\n position: relative;\\n}\\n\\n.priority-nav__dropdown {\\n list-style: none;\\n margin-left: 0;\\n background: #fff;\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n padding: 1rem 0rem;\\n position: absolute;\\n top: 100%;\\n right: 0;\\n opacity: 0;\\n margin-top: 0.25rem;\\n transform: translate(0, 1rem);\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n visibility: hidden;\\n z-index: 1;\\n}\\n\\n.priority-nav__dropdown > li {\\n margin-left: 0;\\n}\\n\\n.priority-nav__dropdown::before {\\n content: '';\\n background-color: #fff;\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 2rem;\\n width: 2.25rem;\\n right: 0;\\n position: absolute;\\n bottom: 100%;\\n transform: translateY(100%);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.priority-nav__dropdown.show {\\n opacity: 1;\\n transform: translate(0, 0);\\n visibility: visible;\\n}\\n\\n.priority-nav__dropdown.show::before {\\n transform: translate(0);\\n}\\n\\n.priority-nav__dropdown-toggle {\\n background-color: transparent;\\n border: 0;\\n border-radius: 0;\\n color: #3fd8b6;\\n padding: 0;\\n outline: none !important;\\n cursor: pointer;\\n display: block;\\n visibility: hidden;\\n position: absolute;\\n padding: 0 0.375rem;\\n z-index: 2;\\n}\\n\\n.priority-nav__dropdown-toggle:hover {\\n background-color: transparent;\\n color: #2bd3ad;\\n}\\n\\n.priority-nav__dropdown-toggle:active {\\n background-color: transparent;\\n color: #26be9c;\\n}\\n\\n.priority-nav__dropdown-toggle svg {\\n pointer-events: none;\\n transition: fill 0.4s ease;\\n}\\n\\n.priority-nav__dropdown-toggle:hover svg {\\n fill: #3fd8b6;\\n}\\n\\n.priority-nav-has-dropdown .priority-nav__dropdown-toggle {\\n position: relative;\\n}\\n\\n.priority-nav.is-open .priority-nav__dropdown-toggle svg {\\n fill: #3fd8b6;\\n}\\n\\n.priority-nav-is-visible {\\n visibility: visible;\\n}\\n\\n.priority-nav-is-hidden {\\n visibility: hidden;\\n}\\n\\n.overlay-show {\\n background-color: #000;\\n opacity: 0;\\n position: fixed;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n pointer-events: none;\\n transition: opacity 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n z-index: 1000;\\n}\\n\\n.overlay-visible .overlay-show,\\n.overlay-show.show {\\n pointer-events: all;\\n opacity: 0.6;\\n}\\n\\n.flyout {\\n transform: translateX(101%);\\n background-color: #fff;\\n overflow: hidden;\\n -webkit-overflow-scrolling: touch;\\n overflow-y: scroll;\\n position: fixed;\\n top: 0;\\n right: 0;\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n will-change: transform;\\n height: 100%;\\n width: 100%;\\n z-index: 1300;\\n}\\n\\n@media (min-width: 601px) {\\n .flyout {\\n max-width: 40rem;\\n }\\n}\\n\\n.flyout.show {\\n transform: translate3d(0, 0, 0) scale(1);\\n}\\n\\n.no-csstransforms .flyout {\\n right: -200%;\\n}\\n\\n.no-csstransforms .flyout.show {\\n right: 0%;\\n}\\n\\n.flyout__inner {\\n padding: 2.5rem;\\n}\\n\\n.flyout__close {\\n padding: 2rem;\\n height: 1.25rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 1;\\n}\\n\\n.flyout__close::before,\\n.flyout__close::after {\\n content: '';\\n background-color: #000;\\n transition: background-color 0.4s ease;\\n height: 0.125rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n}\\n\\n.flyout--team .flyout__close::before,\\n.flyout--team .flyout__close::after {\\n background-color: #fff;\\n}\\n\\n.flyout__close::before {\\n transform: translate(-50%, -50%) rotate(45deg);\\n}\\n\\n.flyout__close::after {\\n transform: translate(-50%, -50%) rotate(-45deg);\\n}\\n\\n.flyout__close:hover::before,\\n.flyout__close:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\n.flyout-data {\\n display: none;\\n}\\n\\n.flyout .flyout-data {\\n display: block;\\n}\\n\\n.footer {\\n display: block;\\n padding: 6rem 2rem;\\n padding-top: 2.5rem;\\n padding-bottom: 2.5rem;\\n font-size: 0.75rem;\\n}\\n\\n@media (min-width: 901px) {\\n .footer {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .footer {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.footer > :last-child {\\n margin-bottom: 0;\\n}\\n\\n@media (max-width: 600px) {\\n .footer {\\n text-align: center;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .footer {\\n display: flex;\\n justify-content: center;\\n padding-top: 4rem;\\n padding-bottom: 4rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .footer {\\n padding-top: 6rem;\\n padding-bottom: 6rem;\\n }\\n}\\n\\n.footer a {\\n color: #181d25;\\n font-size: inherit;\\n font-weight: 400;\\n}\\n\\n.footer a:hover {\\n color: #3fd8b6;\\n}\\n\\n.footer a:active {\\n color: #26be9c;\\n}\\n\\n.footer .company {\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .footer .company {\\n margin-bottom: 0;\\n }\\n}\\n\\n.footer .contact {\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .footer .contact {\\n margin-bottom: 0;\\n }\\n}\\n\\n@media (max-width: 600px) {\\n .footer span {\\n display: block;\\n }\\n}\\n\\n.footer .copyright,\\n.footer .privacy-policy {\\n margin-bottom: 0.5rem;\\n}\\n\\n.footer .divider {\\n display: inline-block;\\n margin: 0 0.5rem;\\n}\\n\\n@media (max-width: 600px) {\\n .footer .divider {\\n display: none;\\n }\\n}\\n\\n.gform_fields {\\n list-style: none;\\n margin-left: 0;\\n display: flex;\\n flex-flow: row wrap;\\n}\\n\\n.gform_fields > li {\\n margin-left: 0;\\n}\\n\\n.gfield {\\n flex-basis: 100%;\\n margin-bottom: 1.5rem;\\n}\\n\\n.gfield_radio,\\n.gfield_checkbox {\\n list-style: none;\\n margin-left: 0;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n\\n.gfield_radio > li,\\n.gfield_checkbox > li {\\n margin-left: 0;\\n}\\n\\n.gfield_radio li,\\n.gfield_checkbox li {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n.gfield_radio li > *,\\n.gfield_checkbox li > * {\\n cursor: pointer;\\n}\\n\\n.gfield_label {\\n font-weight: 700;\\n display: none;\\n}\\n\\n.show-label .gfield_label {\\n display: block;\\n}\\n\\n.gfield.half-col {\\n flex-basis: calc(50% - 0.75rem);\\n margin-right: 1.5rem;\\n}\\n\\n.gfield.half-col + .gfield.half-col {\\n margin-right: 0;\\n}\\n\\n.ginput_complex {\\n display: flex;\\n}\\n\\n.ginput_complex > span {\\n flex-basis: 100%;\\n}\\n\\n.ginput_complex > span:not(:last-child) {\\n margin-right: 1.5rem;\\n}\\n\\n.ginput_complex > span label {\\n font-size: 0.875rem;\\n}\\n\\n.ss-main {\\n color: #181d25;\\n font-size: 1rem;\\n}\\n\\n.ss-main .ss-single-selected {\\n background-color: #fff;\\n border: #e6e6e6 2px solid;\\n border-radius: 0.25rem;\\n padding: 0.5rem 1rem 0.5rem 1.5rem;\\n transition: border-color 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n height: 2.75rem;\\n}\\n\\n.ss-main .ss-single-selected .placeholder {\\n line-height: 1.5;\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span {\\n border-color: #979797;\\n transition: all 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.ss-main .ss-single-selected .ss-arrow span.arrow-up {\\n margin: 4px 0 0;\\n transform: rotate(-45deg) scaleY(-1);\\n}\\n\\n.ss-main .ss-single-selected:hover,\\n.ss-main .ss-single-selected:focus,\\n.ss-main .ss-single-selected.ss-open-below {\\n border-color: #3fd8b6;\\n}\\n\\n.ss-main .ss-single-selected:hover .ss-arrow span,\\n.ss-main .ss-single-selected:focus .ss-arrow span,\\n.ss-main .ss-single-selected.ss-open-below .ss-arrow span {\\n border-color: #3fd8b6;\\n}\\n\\n.ss-main .ss-content {\\n border: 0;\\n border-radius: 0.25rem;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n margin: 1rem 0rem 0rem;\\n overflow: hidden;\\n}\\n\\n.ss-main .ss-content::before {\\n content: '';\\n background: red;\\n position: absolute;\\n bottom: 100%;\\n right: 1rem;\\n height: 1rem;\\n width: 2rem;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option {\\n padding: 0.5rem 1.5rem;\\n}\\n\\n.ss-main .ss-content .ss-list .ss-option:not(.ss-disabled):hover {\\n background-color: #f9f9fa;\\n color: #181d25;\\n}\\n\\n.gallery {\\n text-align: center;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .gallery {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n }\\n}\\n\\n.gallery__inner {\\n display: grid;\\n /* (1) */\\n grid-template-columns: repeat(2, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(2, 1fr);\\n /* (3) */\\n justify-content: space-between;\\n /* (5) */\\n margin-left: 16px;\\n margin-right: 16px;\\n}\\n\\n@media (min-width: 601px) {\\n .gallery__inner {\\n grid-template-columns: repeat(3, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */\\n margin-left: -8px;\\n margin-right: -8px;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .gallery__inner {\\n grid-template-columns: repeat(4, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .gallery__inner {\\n margin-left: -12px;\\n margin-right: -12px;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n [data-max=\\\"5\\\"] .gallery__inner {\\n grid-template-columns: repeat(3, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(3, 1fr);\\n /* (3) */\\n }\\n}\\n\\n@media (min-width: 901px) {\\n [data-max=\\\"5\\\"] .gallery__inner {\\n grid-template-columns: repeat(4, 1fr);\\n /* (2) */\\n grid-template-rows: repeat(2, 1fr);\\n /* (3) */\\n }\\n}\\n\\n.gallery__image {\\n position: relative;\\n /* --columns: 2;\\n flex-basis: map-get($column-widths, 2);\\n margin-bottom: spacing();\\n\\n @include from(s) {\\n --columns: 3;\\n flex-basis: map-get($column-widths, 3);\\n margin-bottom: spacing(2);\\n }\\n\\n @include from(m) {\\n /* .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n --columns: 4;\\n flex-basis: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n --columns: 5;\\n flex-basis: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n --columns: 6;\\n flex-basis: map-get($column-widths, 6);\\n }\\n } */\\n}\\n\\n.gallery__image:first-child {\\n grid-column: 1 / 3;\\n /* (6) */\\n grid-row: 1 / 3;\\n /* (7) */\\n}\\n\\n@media (min-width: 901px) {\\n .gallery__image:first-child {\\n grid-column: 1 / 3;\\n /* (6) */\\n grid-row: 1 / 3;\\n /* (7) */\\n }\\n}\\n\\n.gallery[data-visible=\\\"6\\\"] .gallery__image:nth-child(n + 7) {\\n display: none;\\n}\\n\\n.gallery[data-visible=\\\"8\\\"] .gallery__image:nth-child(n + 9) {\\n display: none;\\n}\\n\\n.gallery[data-visible=\\\"10\\\"] .gallery__image:nth-child(n + 11) {\\n display: none;\\n}\\n\\n.gallery[data-visible=\\\"12\\\"] .gallery__image:nth-child(n + 13) {\\n display: none;\\n}\\n\\n.gallery__image .media[data-ratio=\\\"1:1\\\"] {\\n width: calc(100% - 16px);\\n height: calc(100% - 16px);\\n padding-bottom: calc(100% - 16px);\\n margin: 8px;\\n}\\n\\n@media (min-width: 1201px) {\\n .gallery__image .media[data-ratio=\\\"1:1\\\"] {\\n width: calc(100% - 24px);\\n height: calc(100% - 24px);\\n padding-bottom: calc(100% - 24px);\\n margin: 12px;\\n }\\n}\\n\\n.gallery__image--hidden {\\n display: none;\\n}\\n\\n.gallery__more {\\n background: rgba(0, 0, 0, 0.5);\\n color: #fff;\\n pointer-events: none;\\n font-size: 2rem;\\n font-weight: 700;\\n position: absolute;\\n right: 0;\\n bottom: 0.5rem;\\n height: 0;\\n /* padding-bottom: map-get($column-widths, 2);\\n width: map-get($column-widths, 2);\\n\\n @include from(s) {\\n bottom: spacing(2);\\n padding-bottom: map-get($column-widths, 3);\\n width: map-get($column-widths, 3);\\n }\\n\\n @include from(m) {\\n .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n padding-bottom: map-get($column-widths, 4);\\n width: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n padding-bottom: map-get($column-widths, 5);\\n width: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n padding-bottom: map-get($column-widths, 6);\\n width: map-get($column-widths, 6);\\n }\\n } */\\n}\\n\\n.gallery__extra {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n.hamburger {\\n cursor: pointer;\\n}\\n\\n.hamburger__box {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: space-between;\\n height: 0.75rem;\\n width: 1.125rem;\\n}\\n\\n.hamburger__layer {\\n background-color: #000;\\n display: block;\\n height: 0.125rem;\\n width: 100%;\\n}\\n\\n.nav-in-hero .header .hamburger__layer {\\n background-color: #fff;\\n}\\n\\n.nav-in-hero .header,\\n.nav-in-hero--front.home .header,\\n.nav-in-hero .header__inner,\\n.nav-in-hero--front.home .header__inner {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n}\\n\\n.header__inner {\\n background-color: #fff;\\n height: 4rem;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n position: relative;\\n padding: 1rem 2rem;\\n transition: background-color 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955), box-shadow 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n width: 100%;\\n z-index: 100;\\n}\\n\\n@media (min-width: 901px) {\\n .header__inner {\\n padding: 2rem;\\n height: 7rem;\\n }\\n}\\n\\n.nav-in-hero .header__inner,\\n.nav-in-hero--front.home .header__inner {\\n background-color: transparent;\\n border: 0;\\n}\\n\\n.sticky-header .header .header__inner {\\n background-color: #fff;\\n border-bottom: #f9f9fa 1px solid;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n transform: translateY(-100%);\\n transition: transform 0s linear;\\n position: fixed;\\n}\\n\\n.sticky-header .header .header__inner.is-up,\\n.sticky-header .header .header__inner.is-down {\\n transition: transform 0.4s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.sticky-header .header .header__inner.is-up {\\n transform: translateY(-100%);\\n}\\n\\n.sticky-header .header .header__inner.is-down {\\n transform: translateY(0);\\n}\\n\\n.header__inner .brand {\\n display: block;\\n position: relative;\\n height: 100%;\\n width: 5rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .header__inner .brand {\\n width: 5rem;\\n }\\n}\\n\\n.header__inner .brand .logo {\\n height: 100%;\\n width: auto;\\n}\\n\\n.header__inner .nav--primary {\\n flex-grow: 1;\\n}\\n\\n.hero {\\n position: relative;\\n}\\n\\n.internal .hero .hero__wrap,\\n.single .hero .hero__wrap {\\n min-height: 20rem;\\n}\\n\\n@media (min-width: 601px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 25rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 30rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .internal .hero .hero__wrap,\\n .single .hero .hero__wrap {\\n min-height: 35rem;\\n }\\n}\\n\\n.home .hero {\\n height: calc(100vh - 4rem);\\n min-height: 30rem;\\n}\\n\\n@media (min-width: 901px) {\\n .home .hero {\\n min-height: 35rem;\\n height: calc(100vh - 7rem);\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .home .hero {\\n min-height: 45rem;\\n }\\n}\\n\\n.home .hero .swiper-container {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n}\\n\\n.home .hero .swiper-container .swiper-slide {\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n justify-content: center;\\n}\\n\\n.home .hero .swiper-container .swiper-slide .hero__inner {\\n position: relative;\\n}\\n\\n.home .hero .swiper-container .slider__pagination {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.hero__wrap {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n position: relative;\\n height: 100%;\\n}\\n\\n.hero__media {\\n width: 100%;\\n z-index: -2;\\n}\\n\\n.hero--banner .hero__media {\\n order: 2;\\n}\\n\\n.hero.content-align--center .hero__content {\\n text-align: center;\\n}\\n\\n.hero.content-align--center .hero__content__inner {\\n margin: auto;\\n}\\n\\n.hero.content-align--right .hero__content {\\n text-align: right;\\n}\\n\\n.hero.content-align--right .hero__content__inner {\\n margin-right: 0;\\n margin-left: auto;\\n}\\n\\n.hero .bg-img::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.hero__video::after {\\n content: '';\\n background: #000;\\n opacity: 0.5;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out;\\n}\\n\\n.hero__video + .hero__media .bg-img::after {\\n background-color: transparent;\\n}\\n\\n.hero__inner {\\n width: 100%;\\n z-index: 1;\\n}\\n\\n.hero__content {\\n display: block;\\n padding: 6rem 2rem;\\n color: #fff;\\n}\\n\\n@media (min-width: 901px) {\\n .hero__content {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .hero__content {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.hero__content > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.home .hero__content__inner {\\n max-width: 40rem;\\n}\\n\\n.hero--full .hero__content {\\n color: #fff;\\n}\\n\\n.hero--banner .hero__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem;\\n padding-top: 1.5rem;\\n padding-bottom: 2.5rem;\\n width: 100%;\\n}\\n\\n@media (min-width: 1201px) {\\n .hero--banner .hero__content {\\n max-width: 70rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .hero--banner .hero__content {\\n max-width: 80rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .hero--banner .hero__content {\\n padding-top: 3rem;\\n padding-bottom: 5rem;\\n }\\n}\\n\\n.hero__content .meta {\\n margin-bottom: 2rem;\\n color: #fff;\\n}\\n\\n.hero__content .meta:last-child {\\n margin-bottom: 0;\\n}\\n\\n.hero__content .meta a {\\n color: #fff;\\n}\\n\\n.hero__content .meta a:hover,\\n.hero__content .meta a:focus {\\n color: #3fd8b6;\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n width: 100%;\\n}\\n\\n@media (min-width: 901px) {\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta {\\n display: none;\\n }\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links {\\n width: 100%;\\n display: flex;\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button {\\n width: 100%;\\n text-align: center;\\n}\\n\\n@media (max-width: 600px) {\\n .hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n }\\n}\\n\\n.hero[data-nav-buttons=\\\"true\\\"] .nav--meta .links .button + .button {\\n margin-left: 1px;\\n}\\n\\n.icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n}\\n\\n.icon--large {\\n height: 2.5rem;\\n width: 2.5rem;\\n}\\n\\n.fade-lazyload {\\n transition-property: opacity;\\n transition-duration: 0.3s;\\n transition-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n opacity: 0;\\n}\\n\\n.fade-lazyload.lazyloaded {\\n opacity: 1;\\n}\\n\\n.list {\\n list-style: none;\\n margin-left: 0;\\n}\\n\\n.list > li {\\n margin-left: 0;\\n}\\n\\n.list__item {\\n border-top: #979797 2px solid;\\n display: flex;\\n padding: 1.5rem 0rem;\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n\\n.list__item__inner {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n}\\n\\n.list__item__icon {\\n fill: #3fd8b6;\\n line-height: 0;\\n position: relative;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-right: 1rem;\\n}\\n\\n.list__item__icon .icon {\\n position: absolute;\\n top: 50%;\\n left: 0;\\n transform: translate(0, -50%);\\n}\\n\\n.list__item.has-description .list__item__inner {\\n display: block;\\n}\\n\\n.map__legend {\\n display: none;\\n}\\n\\n.map__canvas {\\n height: 100vw;\\n}\\n\\n@media (min-width: 601px) {\\n .map {\\n display: flex;\\n }\\n\\n .map__legend {\\n background-color: #fff;\\n display: block;\\n min-width: 25vw;\\n }\\n\\n .component.u-background-color--light + .map .map__legend {\\n background-color: #f9f9fa;\\n }\\n\\n .map__handler {\\n flex-grow: 1;\\n }\\n\\n .map__canvas {\\n height: 100%;\\n }\\n}\\n\\n.legend {\\n padding: 2rem;\\n}\\n\\n.legend__list {\\n list-style: none;\\n margin-left: 0;\\n}\\n\\n.legend__list > li {\\n margin-left: 0;\\n}\\n\\n.legend__pin {\\n border-top: #979797 2px solid;\\n display: flex;\\n padding: 1.5rem 0rem;\\n cursor: pointer;\\n transition: color 0.4s ease;\\n}\\n\\n.legend__pin__inner {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n}\\n\\n.legend__pin.is-active,\\n.legend__pin:hover {\\n color: #3fd8b6;\\n}\\n\\n.legend__pin:active {\\n color: #2bd3ad;\\n}\\n\\n.legend__pin * {\\n pointer-events: none;\\n}\\n\\n.media {\\n background-color: #313131;\\n position: relative;\\n height: auto;\\n padding-bottom: 100%;\\n overflow: hidden;\\n width: 100%;\\n}\\n\\n.media[data-ratio=\\\"1:1\\\"] {\\n padding-bottom: 100%;\\n}\\n\\n.media[data-ratio=\\\"16:9\\\"] {\\n padding-bottom: 56.25%;\\n}\\n\\n.media[data-ratio=\\\"21:9\\\"] {\\n padding-bottom: 42.85714%;\\n}\\n\\n.media * {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n\\n.media picture,\\n.media img {\\n object-fit: cover;\\n}\\n\\n.meta {\\n display: flex;\\n line-height: 1.2;\\n}\\n\\n.meta__prop {\\n border-left: #979797 1px solid;\\n padding-left: 0.5rem;\\n margin-left: 0.5rem;\\n}\\n\\n.meta__prop:first-child {\\n border: none;\\n padding-left: 0;\\n margin-left: 0;\\n}\\n\\n.meta a {\\n color: #181d25;\\n font-weight: 400;\\n}\\n\\n.meta a:hover {\\n color: #3fd8b6;\\n}\\n\\n.meta a:active {\\n color: #26be9c;\\n}\\n\\n.nav--mobile {\\n margin: 0;\\n padding: 0;\\n background: #fff;\\n border-left: 1px solid #e6e6e6;\\n overflow-x: hidden;\\n overflow-y: auto;\\n position: fixed;\\n top: 0;\\n right: 0;\\n -webkit-overflow-scrolling: touch;\\n transform: translateX(100%);\\n transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n width: 100%;\\n height: 100%;\\n z-index: 1001;\\n}\\n\\n.nav--mobile .flyout__close {\\n padding: 0;\\n position: relative;\\n}\\n\\n.nav--mobile .nav__inner {\\n padding: 6rem 2rem;\\n position: relative;\\n}\\n\\n@media (min-width: 601px) and (max-width: 900px) and (orientation: landscape) {\\n .nav--mobile .nav__inner {\\n padding: 6rem 2rem 2rem;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .nav--mobile .nav__inner {\\n padding: 10rem 4rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .nav--mobile .nav__inner {\\n padding: 11.5rem 5rem;\\n }\\n}\\n\\n.nav--mobile a {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n transform: translateZ(0);\\n transition: transform 0.3s, opacity 0.3s, color 0.4s ease;\\n will-change: transform, opacity;\\n white-space: nowrap;\\n}\\n\\n.no-js .nav--mobile {\\n position: relative;\\n height: auto;\\n width: 100%;\\n overflow: visible;\\n visibility: visible;\\n z-index: 2;\\n}\\n\\n.nav--mobile__contact {\\n padding-top: 2rem;\\n}\\n\\n.nav--mobile__contact .contact-info {\\n text-align: left;\\n}\\n\\n.nav--mobile__contact .contact-info > ul {\\n margin-bottom: 0;\\n}\\n\\n.nav--mobile__contact .contact-info > ul li {\\n padding: 0.5rem 0rem;\\n}\\n\\n.nav--mobile__buttons {\\n padding-top: 4rem;\\n text-align: center;\\n}\\n\\n.nav--mobile__buttons .button {\\n margin-bottom: 0.5rem;\\n width: 90%;\\n}\\n\\n.nav--mobile__social {\\n margin-top: 2rem;\\n}\\n\\n.nav--mobile__social .social {\\n margin-bottom: 0;\\n}\\n\\n.nav--mobile .links .button {\\n display: block;\\n text-align: center;\\n max-width: 350px;\\n}\\n\\n.nav--mobile .links .button + .button {\\n margin-top: 1rem;\\n}\\n\\n.nav--mobile .nav__footer {\\n margin-top: 4rem;\\n}\\n\\n.menu--desktop {\\n list-style: none;\\n margin-left: 0;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n width: 100%;\\n}\\n\\n.menu--desktop > li {\\n margin-left: 0;\\n}\\n\\n.menu--desktop .menu__item {\\n line-height: 1.5;\\n margin-right: 3rem;\\n position: relative;\\n}\\n\\n.menu--desktop .menu__item--parent-link > .icon {\\n content: url(../images/symbols/chevron-up.svg);\\n fill: #181d25;\\n display: block;\\n height: 1.5rem;\\n width: 1.5rem;\\n transform: translate(-50%, 0) scaleY(-1);\\n transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955), fill 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n z-index: 15;\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item--parent-link > .icon {\\n fill: #fff;\\n}\\n\\n.menu--desktop .menu__item--parent-link.is-expanded > .icon {\\n transform: translate(-50%, 0) scaleY(1);\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item--parent-link.is-expanded > .icon {\\n fill: #181d25;\\n}\\n\\n.menu--desktop .menu__item a {\\n color: #181d25;\\n display: block;\\n font-weight: 400;\\n}\\n\\n.menu--desktop .menu__item a:hover {\\n color: #3fd8b6;\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item a {\\n color: #fff;\\n}\\n\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item a:hover {\\n color: #3fd8b6;\\n}\\n\\n.menu--desktop .menu__item .sub-menu {\\n background-color: #fff;\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n opacity: 0;\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n margin: 0;\\n list-style: none;\\n margin-top: 1.25rem;\\n min-width: 11rem;\\n padding: 1.5rem 2rem;\\n transform: translate(-50%, 1rem);\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n width: rem-calc(400);\\n visibility: hidden;\\n z-index: 10;\\n}\\n\\n.menu--desktop .menu__item .sub-menu::before {\\n content: '';\\n background-color: #fff;\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 1.25rem;\\n width: 2.25rem;\\n left: 50%;\\n position: absolute;\\n bottom: 100%;\\n transform: translateX(-50%) translateY(100%);\\n transition: transform 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item {\\n line-height: 1.2;\\n margin-bottom: 1.5rem;\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item:last-child {\\n margin-bottom: 0;\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item a,\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item .sub-menu .menu__item a {\\n color: #181d25;\\n}\\n\\n.menu--desktop .menu__item .sub-menu .menu__item a:hover,\\n.nav-in-hero:not(.sticky-header) .menu--desktop .menu__item .sub-menu .menu__item a:hover {\\n color: #3fd8b6;\\n}\\n\\n.menu--desktop .menu__item.is-expanded .sub-menu {\\n opacity: 1;\\n transform: translate(-50%, 0);\\n visibility: visible;\\n}\\n\\n.menu--desktop .menu__item.is-expanded .sub-menu::before {\\n transform: translateX(-50%);\\n}\\n\\n.menu--mobile {\\n position: relative;\\n}\\n\\n.menu--mobile .menu__wrap {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n width: 100%;\\n}\\n\\n.menu--mobile .menu__level {\\n background: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n overflow: hidden;\\n list-style-type: none;\\n height: auto;\\n visibility: hidden;\\n margin: 0;\\n padding: 0;\\n width: 100%;\\n}\\n\\n.menu--mobile .menu__level--current {\\n visibility: visible;\\n}\\n\\n.menu--mobile .menu__level.animate-outToRight .menu__item {\\n animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__level.animate-outToLeft .menu__item {\\n animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__level.animate-inFromLeft .menu__item {\\n animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__level.animate-inFromRight .menu__item {\\n animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n}\\n\\n.menu--mobile .menu__item {\\n display: block;\\n margin: 0;\\n}\\n\\n.menu--mobile .menu__item:last-child .menu__link {\\n border-bottom: 0;\\n}\\n\\n.menu--mobile .menu__link {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n color: #181d25;\\n fill: #181d25;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1;\\n position: relative;\\n padding: 0.5rem 0rem;\\n text-transform: none;\\n}\\n\\n.menu--mobile .menu__link > * {\\n pointer-events: none;\\n}\\n\\n.menu--mobile .menu__link .icon {\\n height: 1.25rem;\\n width: 1.25rem;\\n margin-left: 0.5rem;\\n}\\n\\n.menu--mobile .menu__link:hover {\\n color: #3fd8b6;\\n fill: #3fd8b6;\\n}\\n\\n.menu--mobile .menu__back {\\n background: #fff;\\n color: #181d25;\\n cursor: pointer;\\n border: 0;\\n bottom: 100%;\\n right: 0;\\n top: -4.5rem;\\n display: flex;\\n align-items: center;\\n font-weight: 700;\\n line-height: 2.5;\\n height: 2rem;\\n padding: 0;\\n position: absolute;\\n opacity: 1;\\n transform: translateX(0);\\n transition: transform 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.25s cubic-bezier(0.215, 0.61, 0.355, 1), color 0.4s ease;\\n z-index: 100;\\n}\\n\\n@media (min-width: 901px) {\\n .menu--mobile .menu__back {\\n top: -7.5rem;\\n right: -2rem;\\n }\\n}\\n\\n.menu--mobile .menu__back.is-hidden {\\n pointer-events: none;\\n opacity: 0;\\n transform: translateX(20px);\\n}\\n\\n.menu--mobile .menu__back .icon {\\n fill: #181d25;\\n transition: fill 0.4s ease;\\n}\\n\\n.menu--mobile .menu__back:hover,\\n.menu--mobile .menu__back:focus {\\n color: #3fd8b6;\\n outline: none;\\n}\\n\\n.menu--mobile .menu__back:hover .icon,\\n.menu--mobile .menu__back:focus .icon {\\n fill: #3fd8b6;\\n}\\n\\n.menu--mobile [class^='animate-'],\\n.menu--mobile [class*=' animate-'] {\\n visibility: visible;\\n}\\n\\n.content,\\n.main {\\n position: relative;\\n}\\n\\n.page__header {\\n padding: 2.5rem 2rem 0rem;\\n}\\n\\n@media (min-width: 601px) {\\n .page__header {\\n padding: 2.5rem 0rem 0rem;\\n }\\n}\\n\\n.page__inner {\\n display: block;\\n padding: 0rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .page__inner {\\n padding: 0rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .page__inner {\\n padding: 0rem 5rem;\\n }\\n}\\n\\n.page__inner > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.page__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .page__content {\\n max-width: 70rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .page__content {\\n max-width: 80rem;\\n }\\n}\\n\\n.page__body {\\n padding-top: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .page__body {\\n padding-top: 5rem;\\n }\\n}\\n\\n.wp-pagenavi {\\n display: flex;\\n justify-content: center;\\n margin-top: 2.5rem;\\n}\\n\\n.wp-pagenavi .pages {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 1px !important;\\n}\\n\\n.wp-pagenavi a,\\n.wp-pagenavi span {\\n border: 0;\\n color: #181d25;\\n margin: 0 0.5rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 2rem;\\n width: 2rem;\\n}\\n\\n.wp-pagenavi a:hover {\\n color: #3fd8b6;\\n}\\n\\n.wp-pagenavi .current {\\n background: #3fd8b6;\\n color: #fff;\\n font-weight: 700;\\n}\\n\\n.wp-pagenavi .extend {\\n display: none;\\n}\\n\\n.wp-pagenavi .previouspostslink,\\n.wp-pagenavi .nextpostslink {\\n display: block;\\n overflow: hidden;\\n text-indent: 101%;\\n white-space: nowrap;\\n}\\n\\n.wp-pagenavi .previouspostslink {\\n position: relative;\\n}\\n\\n.wp-pagenavi .previouspostslink::before,\\n.wp-pagenavi .previouspostslink::after {\\n content: '';\\n border-radius: 0.0625em;\\n display: block;\\n position: absolute;\\n left: 50%;\\n background-color: #4a4a4a;\\n transition: background-color 0.4s ease;\\n height: 0.125em;\\n width: 0.5em;\\n}\\n\\n.wp-pagenavi .previouspostslink::before {\\n bottom: 50%;\\n transform: translate(-50%, -0.1em) rotate(-45deg);\\n}\\n\\n.wp-pagenavi .previouspostslink::after {\\n top: 50%;\\n transform: translate(-50%, 0.1em) rotate(45deg);\\n}\\n\\n.wp-pagenavi .previouspostslink:hover::before,\\n.wp-pagenavi .previouspostslink:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\n.wp-pagenavi .nextpostslink {\\n position: relative;\\n}\\n\\n.wp-pagenavi .nextpostslink::before,\\n.wp-pagenavi .nextpostslink::after {\\n content: '';\\n border-radius: 0.0625em;\\n display: block;\\n position: absolute;\\n left: 50%;\\n background-color: #4a4a4a;\\n transition: background-color 0.4s ease;\\n height: 0.125em;\\n width: 0.5em;\\n}\\n\\n.wp-pagenavi .nextpostslink::before {\\n bottom: 50%;\\n transform: translate(-50%, -0.1em) rotate(45deg);\\n}\\n\\n.wp-pagenavi .nextpostslink::after {\\n top: 50%;\\n transform: translate(-50%, 0.1em) rotate(-45deg);\\n}\\n\\n.wp-pagenavi .nextpostslink:hover::before,\\n.wp-pagenavi .nextpostslink:hover::after {\\n background-color: #3fd8b6;\\n}\\n\\n.featured-posts__list {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) {\\n .featured-posts__list {\\n justify-content: flex-start;\\n }\\n}\\n\\n@media (max-width: 1800px) {\\n .featured-posts .post:nth-child(5) {\\n display: none;\\n }\\n}\\n\\n@media (max-width: 1200px) {\\n .featured-posts .post:nth-child(4) {\\n display: none;\\n }\\n}\\n\\n@media (max-width: 900px) {\\n .featured-posts .post:nth-child(3) {\\n display: none;\\n }\\n}\\n\\n.post__inner {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .post__inner {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .post__inner {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.post__inner > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.post__content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 40rem;\\n}\\n\\n.post__content picture {\\n margin-bottom: 1.5rem;\\n}\\n\\n.post--teaser {\\n flex-basis: 100%;\\n color: #181d25;\\n display: block;\\n font-weight: 400;\\n text-align: left;\\n margin-bottom: 2.5rem;\\n}\\n\\n@media (min-width: 601px) {\\n .post--teaser {\\n flex-basis: calc(50% - 1rem);\\n margin-right: 2rem;\\n }\\n\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .post--teaser {\\n flex-basis: calc(33.33333% - 0.66667rem);\\n margin-right: 1rem;\\n }\\n\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 1rem;\\n }\\n\\n .post--teaser:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .post--teaser {\\n flex-basis: calc(33.33333% - 3.33333rem);\\n margin-right: 5rem;\\n }\\n\\n .post--teaser:nth-of-type(2n) {\\n margin-right: 5rem;\\n }\\n}\\n\\n.post--teaser:last-child {\\n margin-bottom: 0;\\n}\\n\\n.post--teaser .post__content {\\n padding-top: 2.5rem;\\n}\\n\\n.post--teaser .meta {\\n font-size: 0.875rem;\\n margin-bottom: 0.5rem;\\n}\\n\\n.post--teaser.post--featured {\\n margin-right: 0;\\n}\\n\\n.post--teaser.post--featured .post__content {\\n margin-right: 0;\\n margin-left: 0;\\n}\\n\\n.slider {\\n text-align: center;\\n}\\n\\n@media (min-width: 601px) {\\n .slider {\\n padding-top: 24px;\\n }\\n}\\n\\n.slider.has-previews .swiper-slide {\\n height: calc(100% - 4rem);\\n width: calc(100% - 4rem);\\n transition: transform cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s, transform-origin cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.3s;\\n transform: scale(0.9);\\n transform-origin: right center;\\n}\\n\\n.slider.has-previews .swiper-slide.swiper-slide-active,\\n.slider.has-previews .swiper-slide.swiper-slide-duplicate-active {\\n transform: scale(1);\\n}\\n\\n.slider.has-previews .swiper-slide.swiper-slide-active,\\n.slider.has-previews .swiper-slide.swiper-slide-active ~ .swiper-slide {\\n transform-origin: left center;\\n}\\n\\n@media (min-width: 601px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(70% - 2rem);\\n width: calc(70% - 2rem);\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(33.33333% - 2.5rem);\\n width: calc(33.33333% - 2.5rem);\\n }\\n\\n .slider.has-previews .swiper-slide.swiper-slide-prev,\\n .slider.has-previews .swiper-slide.swiper-slide-active,\\n .slider.has-previews .swiper-slide.swiper-slide-next,\\n .slider.has-previews .swiper-slide.swiper-slide-duplicate-prev,\\n .slider.has-previews .swiper-slide.swiper-slide-duplicate-active,\\n .slider.has-previews .swiper-slide.swiper-slide-duplicate-next {\\n transform: scale(1);\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .slider.has-previews .swiper-slide {\\n height: calc(25% - (3 / 4) * 1rem);\\n width: calc(25% - (3 / 4) * 1rem);\\n transform: scale(1);\\n }\\n}\\n\\n.slider__navigation {\\n cursor: pointer;\\n fill: rgba(255, 255, 255, 0.5);\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n transition: fill 0.4s ease;\\n line-height: 0;\\n z-index: 1;\\n}\\n\\n.slider__navigation .icon {\\n height: 4rem;\\n width: 4rem;\\n}\\n\\n.slider__navigation--previous {\\n left: 0;\\n}\\n\\n.slider__navigation--next {\\n right: 0;\\n}\\n\\n.slider__navigation:hover {\\n fill: #3fd8b6;\\n}\\n\\n.slider__navigation.swiper-button-disabled {\\n cursor: default;\\n fill: rgba(255, 255, 255, 0.2);\\n}\\n\\n.slider__pagination {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 1rem 0rem;\\n}\\n\\n.slider__bullet {\\n background-color: #e6e6e6;\\n border-radius: 100%;\\n box-shadow: inset 0 0 0 0.375rem transparent;\\n cursor: pointer;\\n display: block;\\n height: 0.75rem;\\n width: 0.75rem;\\n margin: 0rem 0.25rem;\\n transition: box-shadow 0.3s ease;\\n}\\n\\n.slider__bullet:hover,\\n.slider__bullet:focus {\\n box-shadow: inset 0 0 0 0.375rem #3fd8b6;\\n}\\n\\n.slider__bullet.is-active {\\n box-shadow: inset 0 0 0 2px #3fd8b6;\\n}\\n\\n.social {\\n display: flex;\\n}\\n\\n.social__link {\\n line-height: 0;\\n margin-right: 1rem;\\n}\\n\\n.social__link:last-child {\\n margin-right: 0;\\n}\\n\\n.table {\\n text-align: center;\\n}\\n\\n.table__content {\\n text-align: left;\\n width: 100%;\\n}\\n\\n.table__content th,\\n.table__content td {\\n padding: 1rem 1.5rem;\\n}\\n\\n@media (max-width: 600px) {\\n .table__content th:first-child,\\n .table__content td:first-child {\\n background-color: #303134;\\n color: #fff;\\n }\\n}\\n\\n.table__content thead {\\n background-color: #303134;\\n color: #fff;\\n}\\n\\n.table__content thead th {\\n display: none;\\n font-weight: 700;\\n}\\n\\n@media (min-width: 601px) {\\n .table__content thead th {\\n display: table-cell;\\n }\\n}\\n\\n.table__content tbody tr:nth-child(odd) {\\n background-color: #f4f4f5;\\n}\\n\\n.table__content tbody tr:nth-child(even) {\\n background-color: #eaeaea;\\n}\\n\\n.table__content tbody td:first-child {\\n font-weight: 700;\\n}\\n\\n@media (max-width: 600px) {\\n .table__content tbody td {\\n display: block;\\n }\\n\\n .table__content tbody td::before {\\n content: attr(data-th) \\\": \\\";\\n font-weight: bold;\\n display: inline-block;\\n width: 50%;\\n }\\n}\\n\\n.team__list {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) {\\n .team__list {\\n justify-content: flex-start;\\n }\\n}\\n\\n.team-member__head-shot {\\n overflow: hidden;\\n max-width: 8rem;\\n margin: 0 0 1.5rem;\\n}\\n\\n.team-member--teaser {\\n flex-basis: 100%;\\n color: #181d25;\\n display: block;\\n margin-bottom: 2.5rem;\\n text-align: left;\\n flex-basis: calc(50% - 0.5rem);\\n}\\n\\n@media (min-width: 601px) {\\n .team-member--teaser {\\n flex-basis: calc(50% - 1rem);\\n margin-right: 2rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 901px) {\\n .team-member--teaser {\\n flex-basis: calc(33.33333% - 0.66667rem);\\n margin-right: 1rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 1rem;\\n }\\n\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .team-member--teaser {\\n flex-basis: calc(33.33333% - 3.33333rem);\\n margin-right: 5rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-right: 5rem;\\n }\\n}\\n\\n.team-member--teaser:nth-of-type(2n) {\\n margin-left: 1rem;\\n}\\n\\n@media (min-width: 601px) {\\n .team-member--teaser {\\n flex-basis: calc(33.33333% - 1.33333rem);\\n margin-right: 2rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n) {\\n margin-left: 0;\\n margin-right: 2rem;\\n }\\n\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .team-member--teaser {\\n flex-basis: calc(25% - 3.75rem);\\n margin-right: 5rem;\\n }\\n\\n .team-member--teaser:nth-of-type(2n),\\n .team-member--teaser:nth-of-type(3n) {\\n margin-right: 5rem;\\n }\\n\\n .team-member--teaser:nth-of-type(4n) {\\n margin-right: 0;\\n }\\n}\\n\\n.team-member--teaser .team-member__title {\\n margin-top: -1rem;\\n}\\n\\n@media (min-width: 601px) {\\n .text-image .text-image__wrapper {\\n display: flex;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__image,\\n .text-image__content {\\n flex: 0 0 50%;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__content {\\n display: flex;\\n align-items: center;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__inner {\\n padding-left: 2rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .text-image__inner {\\n padding-left: 4rem;\\n }\\n}\\n\\n.text-image__image {\\n margin-bottom: 2rem;\\n}\\n\\n@media (min-width: 601px) {\\n .text-image__image {\\n margin-bottom: 0;\\n }\\n}\\n\\n.text-image__image .image-container {\\n position: relative;\\n padding-right: 1rem;\\n}\\n\\n@media (min-width: 901px) {\\n .text-image__image .image-container {\\n padding-right: 2rem;\\n }\\n}\\n\\n.text-image__image .image-container::before,\\n.text-image__image .image-container::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n content: \\\"\\\";\\n height: 100%;\\n background-color: #ececec;\\n width: 5px;\\n}\\n\\n.text-image__image .image-container::before {\\n display: none;\\n}\\n\\n.text-image__image .image-container::after {\\n background-color: #3fd8b6;\\n height: 80%;\\n}\\n\\n.text-image__image .image-container__inner {\\n position: relative;\\n width: 100%;\\n padding-bottom: 65%;\\n}\\n\\n.text-image__image .image-container__inner img {\\n box-shadow: 0 0 20px #cecece;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image {\\n order: 2;\\n}\\n\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container {\\n padding-left: 1rem;\\n}\\n\\n@media (min-width: 901px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container {\\n padding-left: 2rem;\\n }\\n}\\n\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container::before,\\n.text-image[data-content-alignment=\\\"left\\\"] .text-image__image .image-container::after {\\n left: 0;\\n right: auto;\\n}\\n\\n@media (min-width: 601px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__inner {\\n padding-left: 0;\\n padding-right: 2rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .text-image[data-content-alignment=\\\"left\\\"] .text-image__inner {\\n padding-right: 4rem;\\n }\\n}\\n\\n.tiles {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n@media (min-width: 601px) {\\n .tiles {\\n flex-direction: row;\\n }\\n}\\n\\n.tiles__image {\\n position: relative;\\n height: 100vw;\\n}\\n\\n@media (max-width: 600px) {\\n .tiles__image {\\n order: 2;\\n }\\n}\\n\\n@media (max-width: 1200px) {\\n .tiles__image {\\n min-height: 49vw;\\n }\\n\\n .tiles__image img {\\n object-fit: cover;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .tiles__image {\\n height: auto;\\n width: 50%;\\n }\\n}\\n\\n.tiles[data-alignment=\\\"left\\\"] .tiles__image {\\n order: 2;\\n}\\n\\n.tiles__inner {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n}\\n\\n@media (min-width: 601px) and (max-width: 900px) {\\n .tiles__inner {\\n padding: 2rem;\\n }\\n}\\n\\n@media (min-width: 601px) {\\n .tiles__inner {\\n width: 50%;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .tiles__inner {\\n padding-right: 8rem;\\n padding-left: 8rem;\\n }\\n}\\n\\nh1 + .button,\\nh2 + .button,\\nh3 + .button,\\nh4 + .button,\\nh5 + .button,\\nh6 + .button,\\np + .button,\\nul + .button,\\nol + .button {\\n margin-top: 3.5rem;\\n}\\n\\n.small {\\n font-size: 0.75rem;\\n}\\n\\n.u-box {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .u-box {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .u-box {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.u-box > :last-child {\\n margin-bottom: 0;\\n}\\n\\n/* ==========================================================================\\n #CLEARFIX\\n ========================================================================== */\\n\\n/**\\n * Attach our clearfix mixin to a utility class.\\n */\\n\\n.u-clearfix::after {\\n content: \\\"\\\";\\n display: block;\\n clear: both;\\n}\\n\\n/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n\\n.u-hidden-visually {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 1px !important;\\n}\\n\\n/**\\n * Hide visually and from screen readers.\\n */\\n\\n.u-hidden {\\n display: none !important;\\n}\\n\\n/**\\n * Hide on small screens\\n */\\n\\n@media (max-width: 900px) {\\n .u-hidden-small {\\n display: none;\\n }\\n}\\n\\n/**\\n * Hide on large screens\\n */\\n\\n@media (min-width: 901px) {\\n .u-hidden-large {\\n display: none;\\n }\\n}\\n\\n.u-text-align--left {\\n text-align: left;\\n}\\n\\n.u-text-align--center {\\n text-align: center;\\n}\\n\\n.u-text-align--right {\\n text-align: right;\\n}\\n\\n/* ==========================================================================\\n #WRAPPER\\n ========================================================================== */\\n\\n/**\\n * Page-level constraining and wrapping elements.\\n */\\n\\n.u-content {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 40rem;\\n}\\n\\n.u-content picture {\\n margin-bottom: 1.5rem;\\n}\\n\\n.u-wrapper {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 60rem;\\n}\\n\\n@media (min-width: 1201px) {\\n .u-wrapper {\\n max-width: 70rem;\\n }\\n}\\n\\n@media (min-width: 1801px) {\\n .u-wrapper {\\n max-width: 80rem;\\n }\\n}\\n\\n.u-wrapper--narrow {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: 70rem;\\n}\\n\\n@media (min-width: 1801px) {\\n .u-wrapper--narrow {\\n max-width: 80rem;\\n }\\n}\\n\\n.u-box {\\n display: block;\\n padding: 6rem 2rem;\\n}\\n\\n@media (min-width: 901px) {\\n .u-box {\\n padding: 9rem 5rem;\\n }\\n}\\n\\n@media (min-width: 1201px) {\\n .u-box {\\n padding: 12.5rem 5rem;\\n }\\n}\\n\\n.u-box > :last-child {\\n margin-bottom: 0;\\n}\\n\\n/*!\\n * baguetteBox.js\\n * @author feimosi\\n * @version 1.10.0\\n * @url https://github.com/feimosi/baguetteBox.js\\n */\\n\\n#baguetteBox-overlay {\\n display: none;\\n opacity: 0;\\n position: fixed;\\n overflow: hidden;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: 1000000;\\n background-color: #222;\\n background-color: rgba(0, 0, 0, 0.8);\\n -webkit-transition: opacity .5s ease;\\n transition: opacity .5s ease;\\n}\\n\\n#baguetteBox-overlay.visible {\\n opacity: 1;\\n}\\n\\n#baguetteBox-overlay .full-image {\\n display: inline-block;\\n position: relative;\\n width: 100%;\\n height: 100%;\\n text-align: center;\\n}\\n\\n#baguetteBox-overlay .full-image figure {\\n display: inline;\\n margin: 0;\\n height: 100%;\\n}\\n\\n#baguetteBox-overlay .full-image img {\\n display: inline-block;\\n width: auto;\\n height: auto;\\n max-height: 100%;\\n max-width: 100%;\\n vertical-align: middle;\\n -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\\n -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\\n}\\n\\n#baguetteBox-overlay .full-image figcaption {\\n display: block;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n text-align: center;\\n line-height: 1.8;\\n white-space: normal;\\n color: #ccc;\\n background-color: #000;\\n background-color: rgba(0, 0, 0, 0.6);\\n font-family: sans-serif;\\n}\\n\\n#baguetteBox-overlay .full-image:before {\\n content: \\\"\\\";\\n display: inline-block;\\n height: 50%;\\n width: 1px;\\n margin-right: -1px;\\n}\\n\\n#baguetteBox-slider {\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100%;\\n width: 100%;\\n white-space: nowrap;\\n -webkit-transition: left .4s ease,-webkit-transform .4s ease;\\n transition: left .4s ease,-webkit-transform .4s ease;\\n transition: left .4s ease,transform .4s ease;\\n transition: left .4s ease,transform .4s ease,-webkit-transform .4s ease,-moz-transform .4s ease;\\n}\\n\\n#baguetteBox-slider.bounce-from-right {\\n -webkit-animation: bounceFromRight .4s ease-out;\\n animation: bounceFromRight .4s ease-out;\\n}\\n\\n#baguetteBox-slider.bounce-from-left {\\n -webkit-animation: bounceFromLeft .4s ease-out;\\n animation: bounceFromLeft .4s ease-out;\\n}\\n\\n@-webkit-keyframes bounceFromRight {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: -30px;\\n }\\n}\\n\\n@keyframes bounceFromRight {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: -30px;\\n }\\n}\\n\\n@-webkit-keyframes bounceFromLeft {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: 30px;\\n }\\n}\\n\\n@keyframes bounceFromLeft {\\n 0%, 100% {\\n margin-left: 0;\\n }\\n\\n 50% {\\n margin-left: 30px;\\n }\\n}\\n\\n.baguetteBox-button#next-button,\\n.baguetteBox-button#previous-button {\\n top: 50%;\\n top: calc(50% - 30px);\\n width: 44px;\\n height: 60px;\\n}\\n\\n.baguetteBox-button {\\n position: absolute;\\n cursor: pointer;\\n outline: 0;\\n padding: 0;\\n margin: 0;\\n border: 0;\\n -moz-border-radius: 15%;\\n border-radius: 15%;\\n background-color: #323232;\\n background-color: rgba(50, 50, 50, 0.5);\\n color: #ddd;\\n font: 1.6em sans-serif;\\n -webkit-transition: background-color .4s ease;\\n transition: background-color .4s ease;\\n}\\n\\n.baguetteBox-button:focus,\\n.baguetteBox-button:hover {\\n background-color: rgba(50, 50, 50, 0.9);\\n}\\n\\n.baguetteBox-button#next-button {\\n right: 2%;\\n}\\n\\n.baguetteBox-button#previous-button {\\n left: 2%;\\n}\\n\\n.baguetteBox-button#close-button {\\n top: 20px;\\n right: 2%;\\n right: calc(2% + 6px);\\n width: 30px;\\n height: 30px;\\n}\\n\\n.baguetteBox-button svg {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.baguetteBox-spinner {\\n width: 40px;\\n height: 40px;\\n display: inline-block;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -20px;\\n margin-left: -20px;\\n}\\n\\n.baguetteBox-double-bounce1,\\n.baguetteBox-double-bounce2 {\\n width: 100%;\\n height: 100%;\\n -moz-border-radius: 50%;\\n border-radius: 50%;\\n background-color: #fff;\\n opacity: .6;\\n position: absolute;\\n top: 0;\\n left: 0;\\n -webkit-animation: bounce 2s infinite ease-in-out;\\n animation: bounce 2s infinite ease-in-out;\\n}\\n\\n.baguetteBox-double-bounce2 {\\n -webkit-animation-delay: -1s;\\n animation-delay: -1s;\\n}\\n\\n@-webkit-keyframes bounce {\\n 0%, 100% {\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n }\\n\\n 50% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n}\\n\\n@keyframes bounce {\\n 0%, 100% {\\n -webkit-transform: scale(0);\\n -moz-transform: scale(0);\\n transform: scale(0);\\n }\\n\\n 50% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n transform: scale(1);\\n }\\n}\\n\\n\",\"// Animate in from the right\\n@keyframes inFromRight {\\n from {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n// Animate out to the right\\n@keyframes outToRight {\\n to {\\n opacity: 0;\\n transform: translate3d(100%, 0, 0);\\n }\\n}\\n\\n// Animate in from the left\\n@keyframes inFromLeft {\\n from {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0);\\n }\\n\\n to {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\\n// Animate out to the left\\n@keyframes outToLeft {\\n to {\\n opacity: 0;\\n transform: translate3d(-100%, 0, 0);\\n }\\n}\\n\\n.is-magic {\\n transform: translateY(50px);\\n transition-property: transform, opacity;\\n transition-duration: 1s;\\n transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);\\n opacity: 0 !important;\\n transition-delay: 0s;\\n\\n &.is-loaded {\\n opacity: 1 !important;\\n transform: translateY(0);\\n }\\n}\\n\\n@for $i from 1 through 48 {\\n .is-magic.delay--#{$i} {\\n &.is-loaded {\\n transition-delay: (#{$i * 0.3}s) !important;\\n }\\n }\\n}\\n\",\"/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n\\n@mixin hidden-visually() {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 1px !important;\\n}\\n\\n@mixin hide-text() {\\n display: block;\\n overflow: hidden;\\n text-indent: 101%;\\n white-space: nowrap;\\n}\\n\",\"///* ========================================================================\\n// #CONSTANTS\\n// ======================================================================== */\\n\\n// The constants settings file contains unchanging variables; things that\\n// will stay consistent across most projects.\\n\\n/**\\n * Spacing\\n */\\n\\n$grid--baseline: 0.5rem; // 8\\n\\n$spacing-unit--1: $grid--baseline * 1; // 8\\n$spacing-unit--2: $grid--baseline * 2; // 16\\n$spacing-unit--3: $grid--baseline * 3; // 24\\n$spacing-unit--4: $grid--baseline * 4; // 32\\n$spacing-unit--5: $grid--baseline * 5; // 40\\n$spacing-unit--8: $grid--baseline * 8; // 64\\n$spacing-unit--12: $grid--baseline * 12; // 96\\n$spacing-unit: $spacing-unit--4;\\n\\n\\n/**\\n * Typography\\n */\\n\\n// Weights\\n$font-weight--thin: 100;\\n$font-weight--light: 300;\\n$font-weight--regular: 400;\\n$font-weight--medium: 500;\\n$font-weight--semi-bold: 600;\\n$font-weight--bold: 700;\\n$font-weight--extra-bold: 800;\\n$font-weight--black: 900;\\n\\n// Letter Spacing\\n$letter-spacing--base: normal;\\n\\n$letter-spacing--small: 0.0375rem;\\n$letter-spacing--medium: 0.0625rem;\\n$letter-spacing--large: 0.125rem;\\n\\n\\n/**\\n * Transitions\\n */\\n\\n$transition--ease-out-sine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$transition--ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n$transition--ease-out-back: cubic-bezier(0.04, 0.29, 0.3, 1.35);\\n$transition--ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$transition: $transition--ease-in-out-quad;\\n\\n\\n/**\\n * Breakpoints\\n */\\n\\n$slicer-breakpoints: 0 600px 900px 1200px 1800px;\\n\\n// └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘\\n// Slice numbers: 1 2 3 4 5\\n$slicer-breakpoint-names: 'xs' 's' 'm' 'l' 'xl';\\n\",\"///* ========================================================================\\n// #GLOBAL\\n// ======================================================================== */\\n\\n// The global settings file contains any project-wide variables; things that\\n// need to be made available to the entire codebase.\\n\\n/**\\n * Palette\\n */\\n\\n// Base\\n$_color--brand: #3fd8b6;\\n$_color--grey: #4a4a4a;\\n\\n// Palette\\n$palettes: (\\n white: (\\n base: #fff,\\n dark: #f9f9fa\\n ),\\n black: (\\n base: #000\\n ),\\n grey: (\\n base: $_color--grey,\\n light: lighten($_color--grey, 30%),\\n lighter: #e6e6e6,\\n dark: darken($_color--grey, 10%),\\n darker: #181d25\\n ),\\n brand: (\\n base: $_color--brand,\\n dark: darken($_color--brand, 10%),\\n secondary: secondary($_color--brand),\\n tertiary: tertiary($_color--brand)\\n )\\n);\\n\\n\\n/**\\n * Colours\\n */\\n\\n// Typography\\n$color--text: palette(grey, darker);\\n$color--hover: palette(brand, accent);\\n$color--border: palette(grey, light);\\n$color--link: palette(brand);\\n\\n// States\\n$color--success: #56bd5b;\\n$color--error: #e1464e;\\n\\n\\n/**\\n * Typography\\n */\\n\\n// Weights\\n$font-weight--body: $font-weight--regular;\\n\\n// Families\\n$_font-family--proxima-nova: 'proxima nova', 'helvetica neue', helvetica, arial, sans-serif;\\n\\n$font-family--body: $_font-family--proxima-nova;\\n$font-family--heading: $_font-family--proxima-nova;\\n$font-family--special: $font-family--heading;\\n\\n$line-height--base: 1.75;\\n\\n\\n/**\\n * Widths\\n */\\n$max-width--xnarrow: 30rem; // 640\\n$max-width--narrow: 40rem; // 640\\n$max-width: 60rem; // 960\\n$max-width--wide: 70rem; // 1120\\n$max-width--xwide: 80rem; // 1440\\n\\n/* Heights */\\n$header-height: 7rem;\\n$header-height--mobile: 4rem;\\n\",\"/**\\n * Swiper 4.1.6\\n * Most modern mobile touch slider and framework with hardware accelerated transitions\\n * http://www.idangero.us/swiper/\\n *\\n * Copyright 2014-2018 Vladimir Kharlampidi\\n *\\n * Released under the MIT License\\n *\\n * Released on: February 11, 2018\\n */\\n.swiper-container{margin:0 auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform}.swiper-invisible-blank-slide{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;-o-transition-property:transform,height;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-wp8-horizontal,.swiper-container-wp8-horizontal>.swiper-wrapper{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-container-wp8-vertical,.swiper-container-wp8-vertical>.swiper-wrapper{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");left:10px;right:auto}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\\\");right:10px;left:auto}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\\\")}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\")}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\\\")}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s opacity;-o-transition:.3s opacity;transition:.3s opacity;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{-webkit-transform:scale(.66);-ms-transform:scale(.66);transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{-webkit-transform:scale(.66);-ms-transform:scale(.66);transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;-webkit-transition:.2s top,.2s -webkit-transform;transition:.2s top,.2s -webkit-transform;-o-transition:.2s transform,.2s top;transition:.2s transform,.2s top;transition:.2s transform,.2s top,.2s -webkit-transform}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:.2s left,.2s -webkit-transform;transition:.2s left,.2s -webkit-transform;-o-transition:.2s transform,.2s left;transition:.2s transform,.2s left;transition:.2s transform,.2s left,.2s -webkit-transform}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:.2s right,.2s -webkit-transform;transition:.2s right,.2s -webkit-transform;-o-transition:.2s transform,.2s right;transition:.2s transform,.2s right;transition:.2s transform,.2s right,.2s -webkit-transform}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-progressbar.swiper-pagination-white{background:rgba(255,255,255,.25)}.swiper-pagination-progressbar.swiper-pagination-white .swiper-pagination-progressbar-fill{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-pagination-progressbar.swiper-pagination-black{background:rgba(0,0,0,.25)}.swiper-pagination-progressbar.swiper-pagination-black .swiper-pagination-progressbar-fill{background:#000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:'';width:100%;height:100%;background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\");background-position:50%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-coverflow .swiper-wrapper{-ms-perspective:1200px}\",\".ss-main{position:relative;display:inline-block;user-select:none;color:#666;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:30px;padding:6px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .3s}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{flex:1 1 100%;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder,.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-main .ss-single-selected .placeholder *{width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{cursor:pointer;color:#dcdee2}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 5px;font-weight:700;font-family:Arial,Helvetica,sans-serif}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 5px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:30px;width:100%;padding:0 0 0 3px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .3s}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#dcdee2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#5897fb;border-radius:4px;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#666;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:\\\"\\\";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-main .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:1px solid #dcdee2;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-main .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-main .ss-content .ss-search{display:flex;flex-direction:row;padding:8px 10px}.ss-main .ss-content .ss-search.ss-hide,.ss-main .ss-content .ss-search.ss-hide input{height:0;opacity:0;padding:0;margin:0}.ss-main .ss-content .ss-search input{display:inline-flex;font-size:inherit;font-family:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0;height:30px;padding:5px 10px;margin:0;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-main .ss-content .ss-search input::placeholder{color:#b3b3b3}.ss-main .ss-content .ss-search input:focus{box-shadow:0 0 5px #5897fb}.ss-main .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box}.ss-main .ss-content .ss-addable{padding-top:0}.ss-main .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-main .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}.ss-main .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-main .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}.ss-main .ss-content .ss-list .ss-option *{display:inline-block}.ss-main .ss-content .ss-list .ss-option.ss-highlighted,.ss-main .ss-content .ss-list .ss-option:hover{color:#fff;background-color:#5897fb}.ss-main .ss-content .ss-list .ss-option.ss-disabled{cursor:default;color:#dcdee2;background-color:#fff}.ss-main .ss-content .ss-list .ss-option.ss-hide{display:none}.ss-main .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fff70062}\",\"/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */\\n\\n/* Document\\n ========================================================================== */\\n\\n/**\\n * 1. Correct the line height in all browsers.\\n * 2. Prevent adjustments of font size after orientation changes in iOS.\\n */\\n\\nhtml {\\n line-height: 1.15; /* 1 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n}\\n\\n/* Sections\\n ========================================================================== */\\n\\n/**\\n * Remove the margin in all browsers.\\n */\\n\\nbody {\\n margin: 0;\\n}\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\n\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n}\\n\\n/* Grouping content\\n ========================================================================== */\\n\\n/**\\n * 1. Add the correct box sizing in Firefox.\\n * 2. Show the overflow in Edge and IE.\\n */\\n\\nhr {\\n box-sizing: content-box; /* 1 */\\n height: 0; /* 1 */\\n overflow: visible; /* 2 */\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\npre {\\n font-family: monospace, monospace; /* 1 */\\n font-size: 1em; /* 2 */\\n}\\n\\n/* Text-level semantics\\n ========================================================================== */\\n\\n/**\\n * Remove the gray background on active links in IE 10.\\n */\\n\\na {\\n background-color: transparent;\\n}\\n\\n/**\\n * 1. Remove the bottom border in Chrome 57-\\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n */\\n\\nabbr[title] {\\n border-bottom: none; /* 1 */\\n text-decoration: underline; /* 2 */\\n text-decoration: underline dotted; /* 2 */\\n}\\n\\n/**\\n * Add the correct font weight in Chrome, Edge, and Safari.\\n */\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\ncode,\\nkbd,\\nsamp {\\n font-family: monospace, monospace; /* 1 */\\n font-size: 1em; /* 2 */\\n}\\n\\n/**\\n * Add the correct font size in all browsers.\\n */\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/**\\n * Prevent `sub` and `sup` elements from affecting the line height in\\n * all browsers.\\n */\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\n/* Embedded content\\n ========================================================================== */\\n\\n/**\\n * Remove the border on images inside links in IE 10.\\n */\\n\\nimg {\\n border-style: none;\\n}\\n\\n/* Forms\\n ========================================================================== */\\n\\n/**\\n * 1. Change the font styles in all browsers.\\n * 2. Remove the margin in Firefox and Safari.\\n */\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit; /* 1 */\\n font-size: 100%; /* 1 */\\n line-height: 1.15; /* 1 */\\n margin: 0; /* 2 */\\n}\\n\\n/**\\n * Show the overflow in IE.\\n * 1. Show the overflow in Edge.\\n */\\n\\nbutton,\\ninput { /* 1 */\\n overflow: visible;\\n}\\n\\n/**\\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\\n * 1. Remove the inheritance of text transform in Firefox.\\n */\\n\\nbutton,\\nselect { /* 1 */\\n text-transform: none;\\n}\\n\\n/**\\n * Correct the inability to style clickable types in iOS and Safari.\\n */\\n\\nbutton,\\n[type=\\\"button\\\"],\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n -webkit-appearance: button;\\n}\\n\\n/**\\n * Remove the inner border and padding in Firefox.\\n */\\n\\nbutton::-moz-focus-inner,\\n[type=\\\"button\\\"]::-moz-focus-inner,\\n[type=\\\"reset\\\"]::-moz-focus-inner,\\n[type=\\\"submit\\\"]::-moz-focus-inner {\\n border-style: none;\\n padding: 0;\\n}\\n\\n/**\\n * Restore the focus styles unset by the previous rule.\\n */\\n\\nbutton:-moz-focusring,\\n[type=\\\"button\\\"]:-moz-focusring,\\n[type=\\\"reset\\\"]:-moz-focusring,\\n[type=\\\"submit\\\"]:-moz-focusring {\\n outline: 1px dotted ButtonText;\\n}\\n\\n/**\\n * Correct the padding in Firefox.\\n */\\n\\nfieldset {\\n padding: 0.35em 0.75em 0.625em;\\n}\\n\\n/**\\n * 1. Correct the text wrapping in Edge and IE.\\n * 2. Correct the color inheritance from `fieldset` elements in IE.\\n * 3. Remove the padding so developers are not caught out when they zero out\\n * `fieldset` elements in all browsers.\\n */\\n\\nlegend {\\n box-sizing: border-box; /* 1 */\\n color: inherit; /* 2 */\\n display: table; /* 1 */\\n max-width: 100%; /* 1 */\\n padding: 0; /* 3 */\\n white-space: normal; /* 1 */\\n}\\n\\n/**\\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n */\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n/**\\n * Remove the default vertical scrollbar in IE 10+.\\n */\\n\\ntextarea {\\n overflow: auto;\\n}\\n\\n/**\\n * 1. Add the correct box sizing in IE 10.\\n * 2. Remove the padding in IE 10.\\n */\\n\\n[type=\\\"checkbox\\\"],\\n[type=\\\"radio\\\"] {\\n box-sizing: border-box; /* 1 */\\n padding: 0; /* 2 */\\n}\\n\\n/**\\n * Correct the cursor style of increment and decrement buttons in Chrome.\\n */\\n\\n[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/**\\n * 1. Correct the odd appearance in Chrome and Safari.\\n * 2. Correct the outline style in Safari.\\n */\\n\\n[type=\\\"search\\\"] {\\n -webkit-appearance: textfield; /* 1 */\\n outline-offset: -2px; /* 2 */\\n}\\n\\n/**\\n * Remove the inner padding in Chrome and Safari on macOS.\\n */\\n\\n[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/**\\n * 1. Correct the inability to style clickable types in iOS and Safari.\\n * 2. Change font properties to `inherit` in Safari.\\n */\\n\\n::-webkit-file-upload-button {\\n -webkit-appearance: button; /* 1 */\\n font: inherit; /* 2 */\\n}\\n\\n/* Interactive\\n ========================================================================== */\\n\\n/*\\n * Add the correct display in Edge, IE 10+, and Firefox.\\n */\\n\\ndetails {\\n display: block;\\n}\\n\\n/*\\n * Add the correct display in all browsers.\\n */\\n\\nsummary {\\n display: list-item;\\n}\\n\\n/* Misc\\n ========================================================================== */\\n\\n/**\\n * Add the correct display in IE 10+.\\n */\\n\\ntemplate {\\n display: none;\\n}\\n\\n/**\\n * Add the correct display in IE 10.\\n */\\n\\n[hidden] {\\n display: none;\\n}\\n\",\"/* ==========================================================================\\n #RESET\\n ========================================================================== */\\n\\n/**\\n * A very simple reset that sits on top of Normalize.css.\\n */\\n\\nbody,\\nh1, h2, h3, h4, h5, h6,\\nblockquote, p, pre,\\ndl, dd, ol, ul,\\nfigure,\\nhr,\\nfieldset, legend {\\n margin: 0;\\n padding: 0;\\n}\\n\\n/**\\n * Remove trailing margins from nested lists.\\n */\\n\\nli > {\\n ol,\\n ul {\\n margin-bottom: 0;\\n }\\n}\\n\\n/**\\n * Remove default table spacing.\\n */\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\n/**\\n * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;`\\n * on fieldsets.\\n */\\n\\nfieldset {\\n min-width: 0; /* [1] */\\n border: 0;\\n}\\n\",\"/* ==========================================================================\\n #SHARED\\n ========================================================================== */\\n\\n/**\\n * Shared declarations for certain elements.\\n */\\n\\naddress,\\nh1, h2, h3, h4, h5, h6,\\nblockquote, pre,\\ndl, ol, ul,\\nhr,\\ntable,\\nfieldset {\\n margin-bottom: $spacing-unit;\\n\\n &:last-child {\\n margin-bottom: 0;\\n }\\n}\\n\\n/**\\n * Consistent indentation for lists.\\n */\\n\\ndd, ol, ul {\\n margin-left: $spacing-unit;\\n}\\n\",\"/* ==========================================================================\\n #PRINT\\n ========================================================================== */\\n\\n/**\\n * Very crude, reset-like styles taken from the HTML5 Boilerplate:\\n * https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/css.md#print-styles\\n * https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L205-L282\\n */\\n\\n @media print {\\n /**\\n * 1. Black prints faster: http://www.sanbeiji.com/archives/953\\n */\\n\\n *, *::before, *::after {\\n background: transparent !important;\\n color: #000 !important; /* [1] */\\n box-shadow: none !important;\\n text-shadow: none !important;\\n }\\n\\n a, a:visited {\\n text-decoration: underline;\\n }\\n\\n a[href]::after {\\n content: \\\" (\\\" attr(href) \\\")\\\";\\n }\\n\\n abbr[title]::after {\\n content: \\\" (\\\" attr(title) \\\")\\\";\\n }\\n\\n /**\\n * Don’t show links that are fragment identifiers, or use the `javascript:`\\n * pseudo protocol.\\n */\\n\\n a[href^=\\\"#\\\"]::after,\\n a[href^=\\\"javascript:\\\"]::after {\\n content: \\\"\\\";\\n }\\n\\n pre,\\n blockquote {\\n border: 1px solid #999;\\n page-break-inside: avoid;\\n }\\n\\n /**\\n * Printing Tables: http://css-discuss.incutio.com/wiki/Printing_Tables\\n */\\n\\n thead {\\n display: table-header-group;\\n }\\n\\n tr,\\n img {\\n page-break-inside: avoid;\\n }\\n\\n img {\\n max-width: 100% !important;\\n }\\n\\n p,\\n h2,\\n h3 {\\n orphans: 3;\\n widows: 3;\\n }\\n\\n h2,\\n h3 {\\n page-break-after: avoid;\\n }\\n}\\n\",\"/* ==========================================================================\\n #BLOCK\\n ========================================================================== */\\n\\n/**\\n * Stacked image-with-text object. A simple abstraction to cover a very commonly\\n * occurring design pattern.\\n */\\n\\n@mixin o-block($spacing: 4, $selector: null) {\\n $root: null;\\n\\n @if $selector != null {\\n $root: $selector;\\n } @else {\\n $root: kill-variant(&);\\n }\\n\\n display: block;\\n\\n #{$root}__content {\\n padding: spacing($spacing);\\n }\\n}\\n\",\"/* ==========================================================================\\n #BOX\\n ========================================================================== */\\n\\n/**\\n * The box object simply boxes off content. Extend with cosmetic styles in the\\n * Components layer.\\n */\\n\\n@mixin o-box($padding: all) {\\n // @include clearfix();\\n\\n display: block;\\n\\n @if $padding == all {\\n padding: spacing(12 4);\\n } @else if $padding == horizontal {\\n padding: spacing(0 4);\\n } @else if $padding == vertical {\\n padding: spacing(12 0);\\n }\\n\\n @include from(m) {\\n @if $padding == all {\\n padding: spacing(18 10);\\n } @else if $padding == horizontal {\\n padding: spacing(0 10);\\n } @else if $padding == vertical {\\n padding: spacing(18 0);\\n }\\n }\\n\\n @include from(l) {\\n @if $padding == all {\\n padding: spacing(25 10);\\n } @else if $padding == horizontal {\\n padding: spacing(0 10);\\n } @else if $padding == vertical {\\n padding: spacing(25 0);\\n }\\n }\\n\\n > :last-child {\\n margin-bottom: 0;\\n }\\n}\\n\",\"/* ==========================================================================\\n #LIST\\n ========================================================================== */\\n\\n/**\\n * Strip list-like appearance from lists by removing their bullets and any\\n * indentation.\\n */\\n\\n@mixin o-list--bare {\\n list-style: none;\\n margin-left: 0;\\n\\n > li {\\n margin-left: 0;\\n }\\n}\\n\\n/**\\n * The list-inline object simply displays a list of items in one line.\\n */\\n\\n@mixin o-list--inline {\\n margin-left: 0;\\n list-style: none;\\n\\n > li {\\n display: inline-block;\\n }\\n}\\n\\n@mixin o-list--flex {\\n display: flex;\\n margin-left: 0;\\n list-style: none;\\n}\\n\\n@mixin o-list--inline-flex {\\n display: inline-flex;\\n margin-left: 0;\\n list-style: none;\\n}\\n\\n@mixin o-list__item {\\n border-top: $color--border 2px solid;\\n display: flex;\\n padding: spacing(3 0);\\n\\n &__inner {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n }\\n}\\n\\n@mixin o-list--teasers {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center;\\n\\n @include from(s) {\\n justify-content: flex-start;\\n }\\n}\\n\\n@mixin o-list__item--teaser {\\n flex-basis: 100%;\\n\\n @include from(s) {\\n flex-basis: calc(#{percentage(1/2)} - #{spacing(4 / 2)});\\n margin-right: spacing(4);\\n\\n &:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n }\\n\\n @include from(m) {\\n flex-basis: calc(#{percentage(1/3)} - #{spacing(4 / 3)});\\n margin-right: spacing(2);\\n\\n &:nth-of-type(2n) {\\n margin-right: spacing(2);\\n }\\n\\n &:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n }\\n\\n @include from(l) {\\n flex-basis: calc(#{percentage(1/3)} - #{spacing(20 / 3)});\\n margin-right: spacing(10);\\n\\n &:nth-of-type(2n) {\\n margin-right: spacing(10);\\n }\\n }\\n}\\n\",\"blockquote {\\n border-left: $color--border 5px solid;\\n padding-left: spacing(3);\\n}\\n\",\"input[type='tel'],\\ninput[type='text'],\\ninput[type='email'],\\ninput[type='number'],\\ninput[type='search'],\\ntextarea,\\nselect {\\n appearance: none;\\n // @TODO: Replace colors with variables?\\n background-color: palette(white);\\n border: 0;\\n border-bottom: palette(grey, lighter) 4px solid;\\n border-radius: 0;\\n color: $color--text;\\n display: block;\\n padding: spacing(1 0);\\n font-size: 1rem;\\n line-height: 1.5;\\n transition: border-color 0.3s $transition;\\n resize: none;\\n outline: 0;\\n width: 100%;\\n\\n &:hover,\\n &:focus {\\n border-color: palette(brand);\\n }\\n\\n &::placeholder {\\n color: palette(grey, light);\\n }\\n}\\n\\n\\n// select {\\n// position: relative;\\n\\n// &::before {\\n// content: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyBpZD0iaWNvbi1jaGV2cm9uLXVwIiBmaWxsPSIjNEE0QTRBIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPHBhdGggZD0iTTcuNDEgMTUuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2eiIvPg0KPC9zdmc+');\\n// position: absolute;\\n// top: 50%;\\n// right: 1rem;\\n// transform: translate(0, -50%) scaleY(-1);\\n// height: 1.5rem;\\n// width: 1.5rem;\\n// }\\n// }\\n\\ninput[type='checkbox'] {\\n @include custom-option(checkbox);\\n}\\n\\ninput[type='radio'] {\\n @include custom-option(radio);\\n}\\n\",\"@mixin custom-option($type: checkbox) {\\n display: block;\\n margin-top: spacing(-0.5);\\n position: relative;\\n visibility: hidden;\\n height: 1.125rem;\\n width: 1.125rem;\\n\\n &::after {\\n content: '';\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: 1.125rem;\\n border: palette(black) 2px solid;\\n visibility: visible;\\n position: absolute;\\n transition: background 0.3s $transition, border-color 0.3s $transition;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n\\n @if $type == checkbox {\\n border-radius: 0.125rem;\\n } @else if $type == radio {\\n border-radius: 100%;\\n }\\n }\\n\\n @if $type == radio {\\n &::before {\\n content: '';\\n background-color: palette(black);\\n border-radius: 100%;\\n display: block;\\n visibility: visible;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n opacity: 0;\\n transform: translate(-50%, -50%) scale(0.01);\\n transition: background-color 0.3s $transition, opacity 0.3s $transition, transform 0.3s $transition;\\n height: 0.5rem;\\n width: 0.5rem;\\n z-index: 1;\\n }\\n }\\n\\n &:checked {\\n @if $type == checkbox {\\n &::after {\\n background-color: palette(black);\\n background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyBpZD0iaWNvbi1jaGVjayIgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIvPg0KPC9zdmc+');\\n }\\n\\n &:hover::after {\\n background-color: palette(brand);\\n }\\n } @else if $type == radio {\\n &::before {\\n opacity: 1;\\n transform: translate(-50%, -50%);\\n }\\n }\\n }\\n\\n + label {\\n padding-left: spacing(1);\\n transition: color 0.3s $transition;\\n }\\n\\n &:hover {\\n &::after {\\n border-color: palette(brand);\\n }\\n\\n @if $type == radio {\\n &::before {\\n background-color: palette(brand);\\n }\\n }\\n\\n + label {\\n color: palette(brand);\\n }\\n }\\n}\\n\",\"/* ==========================================================================\\n #IMAGES\\n ========================================================================== */\\n\\n/**\\n * 1. Fluid images for responsive purposes.\\n * 2. Offset `alt` text from surrounding copy.\\n * 3. Setting `vertical-align` removes the whitespace that appears under `img`\\n * elements when they are dropped into a page as-is. Safer alternative to\\n * using `display: block;`.\\n */\\n\\npicture {\\n display: block;\\n}\\n\\nimg {\\n height: auto; /* [1] */\\n max-width: 100%; /* [1] */\\n font-style: italic; /* [2] */\\n vertical-align: middle; /* [3] */\\n}\\n\",\"/* ==========================================================================\\n #PAGE\\n ========================================================================== */\\n\\nhtml {\\n box-sizing: border-box;\\n overflow-y: scroll;\\n min-height: 100%;\\n\\n * {\\n &, &::before, &::after {\\n box-sizing: inherit;\\n }\\n }\\n}\\n\\nbody {\\n overflow: hidden;\\n}\\n\\narticle {\\n position: relative;\\n}\\n\",\"/* ==========================================================================\\n #TABLES\\n ========================================================================== */\\n\\n/**\\n * 1. Ensure tables fill up as much space as possible.\\n */\\n\\ntable {\\n width: 100%; /* [1] */\\n}\\n\",\"html {\\n color: $color--text;\\n line-height: $line-height--base;\\n font-family: $font-family--body;\\n font-size: 1rem;\\n font-weight: $font-weight--body;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n\\n @include from(xl) {\\n font-size: 1.125rem;\\n }\\n}\\n\\nbody {\\n @include from(l) {\\n font-size: 1.125rem;\\n }\\n}\\n\\n// Headings\\nh1, h2, h3, h4, h5, h6, p, ul, ol, span {\\n font-variant-ligatures: common-ligatures;\\n font-feature-settings: 'liga', 'clig';\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n\\n &:last-child {\\n margin-bottom: 0;\\n }\\n}\\n\\nh1 { @include o-h1; }\\n\\nh2 { @include o-h2; }\\n\\nh3 { @include o-h3; }\\n\\nh4 { @include o-h4; }\\n\\nh5 { @include o-h5; }\\n\\nh6 { @include o-h6; }\\n\\n// Paragraph\\np {\\n margin: spacing(4 0);\\n}\\n\\na {\\n color: $color--link;\\n // font-size: 1rem;\\n // font-weight: $font-weight--bold;\\n text-decoration: none;\\n transition: color 0.4s ease;\\n\\n &:hover {\\n color: darken($color--link, 5%);\\n }\\n\\n &:active {\\n color: darken($color--link, 10%);\\n }\\n}\\n\",\"//////////////////////////////\\n// Default Variables\\n//////////////////////////////\\n$Breakpoint-Settings: (\\n 'default media': all,\\n 'default feature': min-width,\\n 'default pair': width,\\n\\n 'force all media type': false,\\n 'to ems': false,\\n 'transform resolutions': true,\\n\\n 'no queries': false,\\n 'no query fallbacks': false,\\n\\n 'base font size': 16px,\\n\\n 'legacy syntax': false\\n);\\n\\n$breakpoint: () !default;\\n\\n//////////////////////////////\\n// Imports\\n//////////////////////////////\\n@import \\\"breakpoint/settings\\\";\\n@import 'breakpoint/context';\\n@import 'breakpoint/helpers';\\n@import 'breakpoint/parsers';\\n@import 'breakpoint/no-query';\\n\\n@import 'breakpoint/respond-to';\\n\\n@import \\\"breakpoint/legacy-settings\\\";\\n\\n//////////////////////////////\\n// Breakpoint Mixin\\n//////////////////////////////\\n\\n@mixin breakpoint($query, $no-query: false) {\\n @include legacy-settings-warning;\\n\\n // Reset contexts\\n @include private-breakpoint-reset-contexts();\\n\\n $breakpoint: breakpoint($query, false);\\n\\n $query-string: map-get($breakpoint, 'query');\\n $query-fallback: map-get($breakpoint, 'fallback');\\n\\n $private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global;\\n $private-breakpoint-query-count: map-get($breakpoint, 'query count') !global;\\n\\n // Allow for an as-needed override or usage of no query fallback.\\n @if $no-query != false {\\n $query-fallback: $no-query;\\n }\\n\\n @if $query-fallback != false {\\n $context-setter: private-breakpoint-set-context('no-query', $query-fallback);\\n }\\n\\n // Print Out Query String\\n @if not breakpoint-get('no queries') {\\n @media #{$query-string} {\\n @content;\\n }\\n }\\n\\n @if breakpoint-get('no query fallbacks') != false or breakpoint-get('no queries') == true {\\n\\n $type: type-of(breakpoint-get('no query fallbacks'));\\n $print: false;\\n\\n @if ($type == 'bool') {\\n $print: true;\\n }\\n @else if ($type == 'string') {\\n @if $query-fallback == breakpoint-get('no query fallbacks') {\\n $print: true;\\n }\\n }\\n @else if ($type == 'list') {\\n @each $wrapper in breakpoint-get('no query fallbacks') {\\n @if $query-fallback == $wrapper {\\n $print: true;\\n }\\n }\\n }\\n\\n // Write Fallback\\n @if ($query-fallback != false) and ($print == true) {\\n $type-fallback: type-of($query-fallback);\\n\\n @if ($type-fallback != 'bool') {\\n #{$query-fallback} & {\\n @content;\\n }\\n }\\n @else {\\n @content;\\n }\\n }\\n }\\n\\n @include private-breakpoint-reset-contexts();\\n}\\n\\n\\n@mixin mq($query, $no-query: false) {\\n @include breakpoint($query, $no-query) {\\n @content;\\n }\\n}\\n\",\"@mixin o-h1 {\\n font-family: $font-family--heading;\\n font-size: 2rem;\\n font-weight: $font-weight--regular;\\n line-height: 1.05;\\n margin-bottom: spacing(3);\\n\\n @include from(m) {\\n font-size: 2.75rem;\\n }\\n\\n @include from(l) {\\n font-size: 3.5rem;\\n }\\n}\\n\\n@mixin o-h2 {\\n font-family: $font-family--heading;\\n font-size: 1.75rem;\\n font-weight: $font-weight--regular;\\n line-height: 1.05;\\n margin-bottom: spacing(3);\\n\\n @include from(m) {\\n font-size: 2.125rem;\\n }\\n\\n @include from(l) {\\n font-size: 2.5rem;\\n }\\n}\\n\\n@mixin o-h3 {\\n font-family: $font-family--heading;\\n font-size: 1.5rem;\\n font-weight: $font-weight--light;\\n line-height: 1.25;\\n margin-bottom: spacing(3);\\n\\n @include from(m) {\\n font-size: 1.75rem;\\n }\\n\\n @include from(l) {\\n font-size: 2rem;\\n }\\n}\\n\\n@mixin o-h4 {\\n font-family: $font-family--heading;\\n font-size: 1.25rem;\\n font-weight: $font-weight--regular;\\n line-height: 1.25;\\n margin-bottom: spacing(3);\\n\\n @include from(l) {\\n font-size: 1.5rem;\\n }\\n}\\n\\n@mixin o-h5 {\\n font-family: $font-family--heading;\\n font-size: 1.125rem;\\n font-weight: $font-weight--regular;\\n line-height: 1.25;\\n margin-bottom: spacing(3);\\n\\n @include from(l) {\\n font-size: 1.25rem;\\n }\\n}\\n\\n// @TODO: Update\\n@mixin o-h6 {\\n font-family: $font-family--heading;\\n font-size: 1rem;\\n font-weight: $font-weight--regular;\\n letter-spacing: 0.0625rem;\\n line-height: 1.25;\\n text-transform: uppercase;\\n margin-bottom: spacing(3);\\n}\\n\",\".accordion {\\n text-align: left;\\n\\n &__item {\\n @include o-list__item;\\n display: block;\\n }\\n\\n &__header {\\n cursor: pointer;\\n display: flex;\\n justify-content: space-between;\\n width: 100%;\\n\\n &__toggle {\\n flex-shrink: 0;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-left: spacing();\\n transform: scaleY(-1);\\n transition: transform $transition 0.3s;\\n\\n .accordion__item.is-active & {\\n transform: scaleY(1);\\n }\\n\\n .icon {\\n max-height: 100%;\\n max-width: 100%;\\n }\\n }\\n }\\n\\n &__heading {\\n margin-bottom: 0;\\n }\\n\\n &__content {\\n display: none;\\n overflow: hidden;\\n padding: spacing(1 0 0);\\n transform: scale(0.9);\\n transition: transform 0.3s ease;\\n will-change: transform;\\n }\\n\\n &__item.is-active &__content {\\n transform: scale(1);\\n }\\n}\\n\",\".archive {\\n // &__header {\\n // padding: spacing(5 4 0);\\n\\n // @include from(s) {\\n // padding: spacing(5 0 0);\\n // }\\n // }\\n\\n &__featured {\\n padding-top: spacing(4);\\n\\n @include from(s) {\\n padding-top: spacing(10);\\n }\\n }\\n\\n &__list {\\n @include o-list--teasers;\\n padding-top: spacing(4);\\n\\n @include from(s) {\\n padding-top: spacing(10);\\n }\\n }\\n}\\n\\n.index-data {\\n .filter {\\n padding-top: spacing(4);\\n\\n @include at(xs) {\\n margin: 0 spacing(4);\\n }\\n\\n @include from(m) {\\n padding-top: spacing(5);\\n }\\n }\\n}\\n\",\".bg-img {\\n background-position: 50%;\\n background-repeat: no-repeat;\\n background-size: cover;\\n\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n\\n height: 100%;\\n width: 100%;\\n z-index: 0;\\n}\\n\",\".image-banner {\\n overflow: hidden;\\n min-height: 20rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\\n @include from(s) {\\n min-height: 30rem;\\n }\\n\\n @include from(m) {\\n min-height: 40rem;\\n }\\n\\n @include from(l) {\\n min-height: 50rem;\\n }\\n\\n picture,\\n img {\\n width: 100%;\\n }\\n\\n picture {\\n @include o-overlay;\\n }\\n\\n .banner__image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n\\n .media {\\n padding-bottom: 0;\\n height: 100%;\\n }\\n }\\n\\n .component__inner {\\n color: palette(white);\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n position: relative;\\n }\\n}\\n\",\"@mixin o-overlay($opacity: 0.5, $bg: palette(black), $pointer-events: none) {\\n &::after {\\n content: '';\\n background: $bg;\\n opacity: $opacity;\\n pointer-events: $pointer-events;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n transition: all 0.3s ease-in-out;\\n }\\n}\\n\",\".button,\\n[type=button],\\n[type=reset],\\n[type=submit] {\\n @include o-button;\\n\\n &.button--text {\\n @include o-button--text;\\n }\\n}\\n\\n.links {\\n margin-top: spacing(7);\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n}\\n\",\"@mixin o-button {\\n background-color: palette(brand);\\n // border-radius: 0.125rem;\\n color: palette(white);\\n display: inline-block;\\n font-weight: $font-weight--bold;\\n line-height: 1.125;\\n padding: 1rem 3rem;\\n text-decoration: none;\\n transition: all 0.4s ease;\\n min-width: 12.5rem;\\n text-align: center;\\n\\n &:hover {\\n background-color: darken(palette(brand), 5%);\\n color: palette(white);\\n }\\n\\n &:active {\\n background-color: darken(palette(brand), 10%);\\n color: palette(white);\\n }\\n}\\n\\n@mixin o-button--text {\\n background-color: transparent;\\n border: 0;\\n border-radius: 0;\\n color: $color--link;\\n padding: 0;\\n outline: none !important;\\n\\n &:hover {\\n background-color: transparent;\\n color: darken($color--link, 5%);\\n }\\n\\n &:active {\\n background-color: transparent;\\n color: darken($color--link, 10%);\\n }\\n}\\n\",\".columns-block {\\n .columns {\\n @include from(s) {\\n display: flex;\\n //justify-content: space-between;\\n //margin: 0 spacing(-1.5);\\n flex-wrap: wrap;\\n }\\n\\n &.left-borders {\\n .column {\\n border-left: 4px solid palette(brand);\\n padding-left: 2rem;\\n }\\n }\\n }\\n\\n .column {\\n flex-shrink: 0;\\n flex-grow: 0;\\n margin-bottom: spacing(4);\\n text-align: left;\\n width: 100%;\\n\\n @include from(l) {\\n margin-bottom: spacing(8);\\n }\\n\\n &__icon {\\n line-height: 0;\\n margin-bottom: spacing(3);\\n }\\n\\n @include from(s) {\\n margin-right: spacing(4);\\n // padding: 0 spacing(1.5);\\n }\\n\\n .heading,\\n &__number {\\n @include o-h4;\\n }\\n\\n .heading {\\n margin-bottom: 0;\\n }\\n\\n .heading + p {\\n margin-top: 2rem;\\n }\\n }\\n\\n &[data-columns-per-row=\\\"two\\\"] {\\n .column {\\n flex-basis: calc(#{percentage(1/2)} - #{spacing(4 / 2)});\\n\\n @include from(s) {\\n &:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n }\\n\\n @include from(l) {\\n flex-basis: calc(#{percentage(1/2)} - #{spacing(8 / 2)});\\n margin-right: spacing(8);\\n }\\n }\\n }\\n\\n &[data-columns-per-row=\\\"three\\\"] {\\n .column {\\n flex-basis: calc(#{percentage(1/3)} - #{spacing(8 / 3)});\\n\\n @include from(s) {\\n &:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n }\\n\\n @include from(l) {\\n flex-basis: calc(#{percentage(1/3)} - #{spacing(24 / 3)});\\n margin-right: spacing(12);\\n }\\n }\\n }\\n\\n &[data-columns-per-row=\\\"four\\\"] {\\n .column {\\n flex-basis: calc(#{percentage(1/2)} - #{spacing(4 / 2)});\\n\\n @include from(s) {\\n &:nth-of-type(2n) {\\n margin-right: 0;\\n }\\n }\\n\\n @include from(l) {\\n flex-basis: calc(#{percentage(1/4)} - #{spacing(4)});\\n\\n &:nth-of-type(2n) {\\n margin-right: spacing(4);\\n }\\n\\n &:nth-of-type(4n) {\\n margin-right: 0;\\n }\\n }\\n }\\n }\\n\\n &.u-text-align--center {\\n .columns {\\n justify-content: center;\\n\\n .column {\\n text-align: center;\\n }\\n }\\n }\\n\\n &.u-text-align--right {\\n .columns {\\n justify-content: flex-end;\\n\\n .column {\\n text-align: right;\\n }\\n }\\n }\\n}\\n\",\".company {\\n &__name {\\n //font-weight: $font-weight--medium;\\n //text-transform: uppercase;\\n margin-bottom: spacing(2);\\n }\\n\\n &__tagline {\\n max-width: $max-width--narrow;\\n }\\n}\\n\",\".component {\\n position: relative;\\n\\n .bg-img {\\n z-index: -1;\\n }\\n\\n &__inner {\\n @include o-box;\\n\\n .slider & {\\n padding-right: 0;\\n padding-left: 0;\\n }\\n\\n .gallery & {\\n padding-right: 0;\\n padding-bottom: 0;\\n padding-left: 0;\\n }\\n }\\n\\n &__content {\\n margin: 0 auto;\\n max-width: $max-width--narrow;\\n\\n // @include from(m) {\\n // max-width: $max-width;\\n // }\\n }\\n\\n &__intro {\\n > *:last-child {\\n margin-bottom: spacing(5);\\n\\n @include from(m) {\\n margin-bottom: spacing(10);\\n }\\n }\\n }\\n\\n // @TODO: Update bg colors to be variables\\n &.u-background-color--light {\\n background-color: palette(white);\\n }\\n\\n &.u-background-color--dark {\\n background-color: palette(white, dark);\\n }\\n\\n &.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse &__inner,\\n &.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse &__inner,\\n &.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .featured-blocks__inner,\\n &.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .featured-blocks__inner,\\n &.u-background-color--dark.u-padding-collapse + .component.u-background-color--dark.u-padding-collapse .contact-info__content,\\n &.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse .contact-info__content {\\n padding-top: 0;\\n }\\n\\n &.u-background-color--light.image-banner + .component.u-background-color--light.u-padding-collapse &__inner,\\n &.u-background-color--dark.image-banner + .component.u-background-color--dark.u-padding-collapse &__inner,\\n &.component.u-background-color--light.u-padding-collapse + .u-background-color--light.tiles &__inner,\\n &.component.u-background-color--dark.u-padding-collapse + .u-background-color--dark.tiles &__inner {\\n @include at(xs) {\\n padding-top: 0;\\n }\\n }\\n\\n &.columns-block.u-text-align--center,\\n &.featured-blocks.u-text-align--center,\\n &.featured-posts.u-text-align--center,\\n &.gallery.u-text-align--center,\\n &.video.u-text-align--center,\\n &.table.u-text-align--center,\\n &.team.u-text-align--center,\\n &.slider.u-text-align--center {\\n .component__content {\\n text-align: center;\\n }\\n }\\n\\n &.columns-block.u-text-align--left,\\n &.featured-blocks.u-text-align--left,\\n &.featured-posts.u-text-align--left,\\n &.gallery.u-text-align--left,\\n &.video.u-text-align--left,\\n &.table.u-text-align--left,\\n &.team.u-text-align--left,\\n &.slider.u-text-align--left {\\n .component__content {\\n margin-left: 0;\\n }\\n }\\n\\n &.columns-block.u-text-align--right,\\n &.featured-blocks.u-text-align--right,\\n &.featured-posts.u-text-align--right,\\n &.gallery.u-text-align--right,\\n &.video.u-text-align--right,\\n &.table.u-text-align--right,\\n &.team.u-text-align--right,\\n &.slider.u-text-align--right {\\n .component__content {\\n margin-right: 0;\\n text-align: right;\\n }\\n }\\n\\n &.has-background-image {\\n &__inner {\\n position: relative;\\n z-index: 1;\\n }\\n }\\n\\n &.u-background-color--light + .component.gallery.u-background-color--light,\\n &.u-background-color--dark + .component.gallery.u-background-color--dark,\\n &.u-background-color--light + .component.slider.u-background-color--light,\\n &.u-background-color--dark + .component.slider.u-background-color--dark {\\n padding-top: 0;\\n }\\n\\n &.gallery.u-background-color--light + .component.u-background-color--light,\\n &.gallery.u-background-color--dark + .component.u-background-color--dark {\\n margin-top: -0.5rem;\\n\\n @include from(l) {\\n margin-top: -0.75rem;\\n }\\n }\\n}\\n\\n.u-background-color--light {\\n background-color: palette(white);\\n}\\n\\n.u-background-color--dark {\\n background-color: palette(white, dark);\\n}\\n\\n\",\".contact {\\n @include from(s) {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n\\n &__column {\\n @include from(s) {\\n flex: 0 0 50%;\\n }\\n\\n @include from(m) {\\n flex: 0 0 100%;\\n }\\n\\n @include from(l) {\\n flex: 0 0 50%;\\n }\\n }\\n\\n &__row {\\n margin-bottom: 2rem;\\n }\\n\\n &__address,\\n &__hours,\\n &__phone,\\n &__email {\\n display: flex;\\n\\n .icon {\\n margin-right: 0.5rem;\\n margin-top: 5px;\\n }\\n }\\n}\\n\\n.contact-info {\\n &__wrapper {\\n @include from(m) {\\n display: flex;\\n }\\n }\\n\\n &__content {\\n padding: spacing(12 4);\\n\\n @include from(m) {\\n flex: 1 0 50%;\\n padding-top: spacing(8);\\n padding-bottom: spacing(8);\\n }\\n\\n @include from(l) {\\n padding: spacing(25 10);\\n }\\n\\n .gform_wrapper {\\n margin: 4rem 0;\\n }\\n\\n .gform_fields {\\n @include from(s) {\\n display: flex;\\n justify-content: space-between;\\n }\\n\\n .gfield {\\n @include from(s) {\\n flex: 0 0 100%;\\n }\\n }\\n\\n .gf_left_half, .gf_right_half {\\n @include from(s) {\\n flex: 0 0 48%;\\n }\\n }\\n\\n textarea {\\n height: 8rem;\\n }\\n }\\n }\\n\\n &__map {\\n @include from(m) {\\n flex: 0 1 50%;\\n }\\n\\n .map__canvas {\\n height: 500px;\\n width: 100%;\\n\\n @include from(m) {\\n height: 100%;\\n }\\n\\n .gm-style-iw {\\n max-width: 300px;\\n\\n img {\\n margin-bottom: 1rem;\\n }\\n\\n a {\\n display: block;\\n margin-top: 1rem;\\n }\\n }\\n }\\n }\\n}\\n\",\".home .hero[data-featured-bar=\\\"bottom\\\"],\\n.home .hero[data-featured-bar=\\\"side\\\"] {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\theight: calc(100vh - #{$header-height--mobile});\\n\\tmin-height: 40rem;\\n\\n\\t@include from(m) {\\n height: calc(100vh - #{$header-height});\\n min-height: 45rem;\\n }\\n\\n @include from(l) {\\n min-height: 55rem;\\n }\\n\\n\\t.hero__wrap {\\n\\t\\tflex: 1 1 auto;\\n\\t\\theight: auto;\\n\\t\\tmin-height: 25rem;\\n\\n\\t @include from(m) {\\n\\t min-height: 30rem;\\n\\t }\\n\\n\\t @include from(l) {\\n\\t min-height: 40rem;\\n\\t }\\n\\t}\\n\\n\\t.featured-bar {\\n\\t flex: 0 0 auto;\\n\\t display: flex;\\n\\t justify-content: space-around;\\n\\t align-items: center;\\n\\t padding: 1.5rem 2rem;\\n\\n\\t @include from(m) {\\n\\t \\tpadding: 1.5rem 2rem;\\n }\\n\\n\\t .col + .col {\\n\\t \\tmargin-left: 1rem;\\n\\t }\\n\\n\\t .featured-content-3 {\\n\\t \\tdisplay: none;\\n\\n\\t \\t@include from(s) {\\n\\t \\t\\tdisplay: block;\\n\\t \\t}\\n\\t }\\n\\n\\t &__post {\\n\\t \\tdisplay: none;\\n\\n \\t\\t@include from(s) {\\n \\t\\t\\tdisplay: block;\\n \\t\\t\\tflex: 0 0 40%;\\n \\t\\t}\\n\\n \\t\\t@include from(m) {\\n \\t\\t\\tflex: 0 0 50%;\\n \\t\\t}\\n\\n\\t \\t.post--teaser {\\n\\t\\t \\tmargin-right: 0;\\n\\t\\t \\twidth: 100%;\\n\\t\\t \\tflex-basis: 100%;\\n\\n\\t\\t \\t@include from(s) {\\n\\t \\t\\t\\tdisplay: flex;\\n\\t \\t\\t\\talign-items: center;\\n\\t \\t\\t}\\n\\n\\t\\t \\t.meta {\\n\\t\\t \\t\\tdisplay: none;\\n\\t\\t \\t}\\n\\n\\t\\t \\t.post__content {\\n\\t\\t \\t\\tpadding-top: 0;\\n\\t\\t \\t\\tmargin-right: 1rem;\\n\\t\\t \\t}\\n\\n\\t\\t \\t.media-container {\\n\\t\\t \\t\\torder: 2;\\n\\t\\t \\t\\tposition: relative;\\n\\t\\t \\t\\twidth: 100%;\\n\\t\\t \\t\\tpadding-bottom: 2rem;\\n\\t\\t \\t\\tdisplay: none;\\n\\n\\t\\t \\t\\t@include from(m) {\\n\\t\\t \\t\\t\\tdisplay: block;\\n\\t\\t \\t\\t}\\n\\n\\t\\t \\t\\t&::before,\\n\\t\\t \\t\\t&::after {\\n\\t\\t \\t\\t\\tposition: absolute;\\n\\t\\t \\t\\t\\tbottom: 0;\\n\\t\\t \\t\\t\\tleft: 0;\\n\\t\\t \\t\\t\\tcontent: \\\"\\\";\\n\\t\\t \\t\\t\\twidth: 100%;\\n\\t\\t \\t\\t\\tbackground-color: #ececec;\\n\\t\\t \\t\\t\\theight: 5px;\\n\\t\\t \\t\\t}\\n\\n\\t\\t \\t\\t&::after {\\n\\t\\t \\t\\t\\tbackground-color: palette(brand);\\n\\t\\t \\t\\t\\twidth: 80%;\\n\\t\\t \\t\\t}\\n\\t\\t \\t}\\n\\n\\t\\t \\t.media {\\n\\t\\t \\t\\tbox-shadow: 0 0 20px #cecece;\\n\\t\\t \\t}\\n\\n\\t\\t \\t.media[data-ratio=\\\"1:1\\\"] {\\n\\t\\t \\t\\tpadding-bottom: 65%;\\n\\t\\t \\t}\\n\\t\\t }\\n\\t\\t}\\n\\n\\t &__content {\\n\\t \\th2 {\\n\\t \\t\\ttext-transform: uppercase;\\n\\t \\t\\tfont-size: 0.75rem;\\n\\t \\t\\topacity: 0.75;\\n\\t \\t}\\n\\n\\t \\th3 {\\n\\t \\t\\t@include o-h5;\\n\\t \\t}\\n\\n\\t \\tp {\\n\\t \\t\\tdisplay: none;\\n\\n\\t \\t\\t@include from(l) {\\n\\t \\t\\t\\tdisplay: block;\\n\\t \\t\\t}\\n\\t \\t}\\n\\t }\\n\\t}\\n}\\n\\n.home .hero[data-featured-bar=\\\"bottom\\\"] {\\n\\t@include from(l) {\\n min-height: 65rem;\\n }\\n\\n .featured-bar {\\n \\t@include from(l) {\\n\\t \\tpadding: 2rem 5rem;\\n\\t }\\n\\n \\t.col + .col {\\n \\t\\tmargin-left: 2rem;\\n \\t}\\n\\n \\t&__post {\\n\\t \\t@include from(l) {\\n\\t \\t\\tmax-width: 750px;\\n\\t \\t}\\n\\n\\t \\t@include from(xl) {\\n\\t \\t\\tmax-width: 800px;\\n\\t \\t}\\n\\n\\t .post--teaser {\\n\\t \\t\\t.post__content {\\n\\t \\t\\t\\t@include from(xl) {\\n\\t \\t\\t\\t\\tmargin-right: 3rem;\\n\\t \\t\\t\\t}\\n\\t \\t\\t}\\n\\t }\\n\\t }\\n }\\n}\\n\\n.hero.home[data-featured-bar=\\\"side\\\"] {\\n\\t@include from(l) {\\n\\t\\tflex-direction: row;\\n\\n\\t\\t.featured-bar {\\n\\t \\tflex-direction: column;\\n\\t \\tmax-width: 24rem;\\n\\t \\theight: 100%;\\n\\t \\tpadding: 2rem 4rem;\\n\\n\\t \\t&__content {\\n\\t \\t\\twidth: 100%;\\n\\t \\t}\\n\\n\\t \\t.col + .col {\\n\\t\\t \\tmargin-left: 0;\\n\\t\\t \\tmargin-top: 2rem;\\n\\t\\t }\\n\\t\\t}\\n\\n\\t\\t.post--teaser {\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\n\\t\\t\\t.media {\\n\\t\\t\\t\\tmargin-top: 3rem;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.home .hero[data-nav-buttons=\\\"true\\\"] {\\n\\t.featured-bar {\\n\\t\\tmargin-bottom: 50px;\\n\\n\\t\\t@include from(m) {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\t}\\n}\\n\",\".featured-blocks {\\n .block {\\n width: 100%;\\n\\n a {\\n display: block;\\n position: relative;\\n\\n .block__image {\\n position: relative;\\n @include o-overlay;\\n\\n &:hover {\\n &::after {\\n opacity: 0.3;\\n }\\n }\\n }\\n\\n .block__content {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n padding: 2rem 3rem;\\n color: palette(white);\\n z-index: 2;\\n\\n @include from(s) {\\n padding: 3.5rem 6rem;\\n }\\n\\n @include from(m) {\\n padding: 2rem 3rem;\\n }\\n\\n @include from(l) {\\n padding: 2.75rem 4.5rem;\\n }\\n\\n @include from(xl) {\\n padding: 3.5rem 6rem;\\n }\\n\\n h2 {\\n @include o-h3;\\n margin-bottom: 0;\\n }\\n\\n h2 + p {\\n margin-top: 0.75rem;\\n }\\n }\\n }\\n }\\n\\n .featured-blocks-slider-pagination {\\n @include from(m) {\\n display: none;\\n }\\n }\\n\\n &__list {\\n margin-left: spacing(-4);\\n margin-right: spacing(-4);\\n\\n @include from(m) {\\n margin-left: spacing(-12);\\n margin-right: spacing(-12);\\n }\\n }\\n\\n .component__inner {\\n padding-bottom: 0;\\n }\\n}\\n\\n.featured-blocks.component.u-background-color--light.u-padding-collapse + .component.u-background-color--light.u-padding-collapse {\\n .component__inner {\\n padding-top: spacing(12);\\n\\n @include from(m) {\\n padding-top: spacing(18);\\n }\\n\\n @include from(l) {\\n padding-top: spacing(25);\\n }\\n }\\n}\\n\\n\\n.featured-blocks[data-blocks=\\\"2\\\"] {\\n .block {\\n @include from(s) {\\n flex: 0 0 50%;\\n }\\n }\\n}\\n\\n.featured-blocks[data-blocks=\\\"3\\\"] {\\n .block {\\n @include from(m) {\\n flex: 0 0 33.333%;\\n }\\n }\\n}\\n\\n.featured-blocks[data-blocks=\\\"4\\\"] {\\n .block {\\n @include from(l) {\\n flex: 0 0 25%;\\n }\\n }\\n}\\n\",\".filter {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n white-space: nowrap;\\n font-size: 1.25rem;\\n line-height: 1.5;\\n\\n &__options {\\n @include o-list--inline-flex;\\n border-left: $color--text 2px solid;\\n margin-bottom: 0;\\n }\\n\\n &__option {\\n color: palette(grey, light);\\n padding: spacing(0 2);\\n\\n &.is-active {\\n color: $color--text;\\n }\\n }\\n}\\n\\n.priority-nav {\\n white-space: nowrap;\\n\\n // > ul {\\n // display: inline-block;\\n\\n // > li {\\n // display: inline-block;\\n // }\\n // }\\n\\n &__wrapper {\\n position: relative;\\n }\\n\\n &__dropdown {\\n @include o-list--bare;\\n background: palette(white);\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n padding: spacing(2 0);\\n position: absolute;\\n top: 100%;\\n right: 0;\\n opacity: 0;\\n margin-top: 0.25rem;\\n transform: translate(0, 1rem);\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n visibility: hidden;\\n z-index: 1;\\n\\n &::before {\\n content: '';\\n background-color: palette(white);\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 2rem;\\n width: 2.25rem;\\n right: 0;\\n position: absolute;\\n bottom: 100%;\\n transform: translateY(100%);\\n transition: transform 0.2s $transition;\\n }\\n\\n &.show {\\n opacity: 1;\\n transform: translate(0, 0);\\n visibility: visible;\\n\\n &::before {\\n transform: translate(0);\\n }\\n }\\n\\n &-toggle {\\n @include o-button--text;\\n cursor: pointer;\\n display: block;\\n visibility: hidden;\\n position: absolute;\\n padding: 0 0.375rem;\\n z-index: 2;\\n\\n svg {\\n pointer-events: none;\\n transition: fill 0.4s ease;\\n }\\n\\n &:hover {\\n svg {\\n fill: $color--link;\\n }\\n }\\n }\\n }\\n\\n &-has-dropdown .priority-nav__dropdown-toggle {\\n position: relative;\\n }\\n\\n &.is-open .priority-nav__dropdown-toggle {\\n svg {\\n fill: $color--link;\\n }\\n }\\n\\n &-is-visible {\\n visibility: visible;\\n }\\n\\n &-is-hidden {\\n visibility: hidden;\\n }\\n}\\n\",\"//\\n// Flyout Overlay\\n// --------------------------------------------------\\n\\n.overlay-show {\\n background-color: palette(black);\\n opacity: 0;\\n position: fixed;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n pointer-events: none;\\n transition: opacity 0.4s $transition--ease-out-cubic;\\n z-index: 1000;\\n\\n .overlay-visible &,\\n &.show {\\n pointer-events: all;\\n opacity: 0.6;\\n }\\n}\\n\\n\\n//\\n// Flyout\\n// --------------------------------------------------\\n\\n.flyout {\\n $l: &;\\n\\n transform: translateX(101%);\\n background-color: palette(white);\\n // border-left: 1px solid $color--border;\\n overflow: hidden;\\n -webkit-overflow-scrolling: touch;\\n overflow-y: scroll; // has to be scroll, not auto\\n position: fixed;\\n top: 0;\\n right: 0;\\n transition: transform 0.4s $transition--ease-out-cubic;\\n will-change: transform;\\n height: 100%;\\n width: 100%;\\n z-index: 1300;\\n\\n @include from(s) {\\n max-width: $max-width--narrow;\\n }\\n\\n // @include from(xl) {\\n // max-width: $max-width;\\n // }\\n\\n &.show {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n\\n .no-csstransforms & {\\n right: -200%;\\n\\n &.show {\\n right: 0%;\\n }\\n }\\n\\n &__inner {\\n padding: spacing(5);\\n }\\n\\n &__close {\\n padding: spacing(4);\\n height: 1.25rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 1;\\n\\n &::before,\\n &::after {\\n content: '';\\n background-color: palette(black);\\n transition: background-color 0.4s ease;\\n height: 0.125rem;\\n width: 1.25rem;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n\\n .flyout--team & {\\n background-color: palette(white);\\n }\\n }\\n\\n &::before {\\n transform: translate(-50%, -50%) rotate(45deg);\\n }\\n\\n &::after {\\n transform: translate(-50%, -50%) rotate(-45deg);\\n }\\n\\n &:hover {\\n &::before,\\n &::after {\\n background-color: palette(brand);\\n }\\n }\\n }\\n}\\n\\n.flyout-data {\\n display: none;\\n\\n .flyout & {\\n display: block;\\n }\\n}\\n\",\".footer {\\n @include o-box;\\n padding-top: spacing(5);\\n padding-bottom: spacing(5);\\n font-size: 0.75rem;\\n\\n @include at (xs) {\\n text-align: center;\\n }\\n\\n @include from(s) {\\n display: flex;\\n justify-content: center;\\n padding-top: spacing(8);\\n padding-bottom: spacing(8);\\n }\\n\\n @include from(l) {\\n padding-top: spacing(12);\\n padding-bottom: spacing(12);\\n }\\n\\n a {\\n color: $color--text;\\n font-size: inherit;\\n font-weight: $font-weight--body;\\n\\n &:hover {\\n color: $color--link;\\n }\\n\\n &:active {\\n color: darken($color--link, 10%);\\n }\\n }\\n\\n .company {\\n margin-bottom: spacing(5);\\n\\n @include from(s) {\\n margin-bottom: 0;\\n }\\n }\\n\\n .contact {\\n margin-bottom: spacing(5);\\n\\n @include from(s) {\\n margin-bottom: 0;\\n }\\n }\\n\\n span {\\n @include at(xs) {\\n display: block;\\n }\\n }\\n\\n .copyright,\\n .privacy-policy {\\n margin-bottom: spacing();\\n }\\n\\n .divider {\\n display: inline-block;\\n margin: 0 0.5rem;\\n\\n @include at (xs) {\\n display: none;\\n }\\n }\\n}\\n\",\".gform {\\n &_fields {\\n @include o-list--bare;\\n display: flex;\\n flex-flow: row wrap;\\n }\\n}\\n\\n.gfield {\\n flex-basis: 100%;\\n margin-bottom: spacing(3);\\n\\n &_radio,\\n &_checkbox {\\n @include o-list--bare;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n\\n li {\\n display: inline-flex;\\n align-items: center;\\n\\n > * {\\n cursor: pointer;\\n }\\n }\\n }\\n\\n &_label {\\n font-weight: $font-weight--bold;\\n display: none;\\n\\n .show-label & {\\n display: block;\\n }\\n }\\n\\n &.half-col {\\n flex-basis: calc(50% - #{spacing(1.5)});\\n margin-right: spacing(3);\\n\\n + .gfield.half-col {\\n margin-right: 0;\\n }\\n }\\n}\\n\\n.ginput_complex {\\n display: flex;\\n\\n > span {\\n flex-basis: 100%;\\n\\n &:not(:last-child) {\\n margin-right: spacing(3);\\n }\\n\\n label {\\n font-size: 0.875rem;\\n }\\n }\\n}\\n\\n.ss-main {\\n color: $color--text;\\n font-size: 1rem;\\n\\n .ss-single-selected {\\n background-color: palette(white);\\n border: palette(grey, lighter) 2px solid;\\n border-radius: 0.25rem;\\n padding: spacing(1 2 1 3);\\n transition: border-color 0.3s $transition;\\n height: 2.75rem;\\n\\n .placeholder {\\n line-height: 1.5;\\n }\\n\\n .ss-arrow {\\n span {\\n border-color: palette(grey, light);\\n transition: all 0.3s $transition;\\n\\n &.arrow-up {\\n margin: 4px 0 0;\\n transform: rotate(-45deg) scaleY(-1);\\n }\\n }\\n }\\n\\n &:hover,\\n &:focus,\\n &.ss-open-below {\\n border-color: palette(brand);\\n\\n .ss-arrow {\\n span {\\n border-color: palette(brand);\\n }\\n }\\n }\\n }\\n\\n .ss-content {\\n border: 0;\\n border-radius: 0.25rem;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n margin: spacing(2 0 0);\\n overflow: hidden;\\n\\n // @TODO: Finish\\n &::before {\\n content: '';\\n background: red;\\n position: absolute;\\n bottom: 100%;\\n right: 1rem;\\n height: 1rem;\\n width: 2rem;\\n }\\n\\n .ss-list {\\n .ss-option {\\n padding: spacing(1 3);\\n\\n &:not(.ss-disabled):hover {\\n background-color: palette(white, dark);\\n color: $color--text;\\n }\\n }\\n }\\n }\\n}\\n\",\".gallery {\\n $layouts: 6, 8, 10, 12;\\n $column-widths: (\\n 2: calc(50% - #{spacing(0.5)}),\\n 3: calc(#{percentage(1/3)} - (#{spacing(4)} / 3)),\\n 4: calc(25% - (#{spacing(6) / 4})),\\n 5: calc(20% - (#{spacing(8)} / 5)),\\n 6: calc(#{percentage(1/6)} - (#{spacing(10)} / 6))\\n );\\n text-align: center;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n\\n @include from(l) {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n }\\n\\n &__inner {\\n display: grid; /* (1) */\\n grid-template-columns: repeat(2, 1fr); /* (2) */\\n grid-template-rows: repeat(2, 1fr); /* (3) */\\n //grid-gap: 1rem; /* (4) */\\n justify-content: space-between; /* (5) */\\n margin-left: 16px;\\n margin-right: 16px;\\n\\n @include from(s) {\\n grid-template-columns: repeat(3, 1fr); /* (2) */\\n grid-template-rows: repeat(3, 1fr); /* (3) */\\n margin-left: -8px;\\n margin-right: -8px;\\n }\\n\\n @include from(m) {\\n grid-template-columns: repeat(4, 1fr); /* (2) */\\n grid-template-rows: repeat(3, 1fr); /* (3) */\\n }\\n\\n @include from(l) {\\n margin-left: -12px;\\n margin-right: -12px;\\n }\\n\\n [data-max=\\\"5\\\"] & {\\n @include from(s) {\\n grid-template-columns: repeat(3, 1fr); /* (2) */\\n grid-template-rows: repeat(3, 1fr); /* (3) */\\n }\\n\\n @include from(m) {\\n grid-template-columns: repeat(4, 1fr); /* (2) */\\n grid-template-rows: repeat(2, 1fr); /* (3) */\\n }\\n }\\n }\\n\\n &__image {\\n position: relative;\\n\\n &:first-child {\\n grid-column: 1 / 3; /* (6) */\\n grid-row: 1 / 3; /* (7) */\\n\\n @include from(m) {\\n grid-column: 1 / 3; /* (6) */\\n grid-row: 1 / 3; /* (7) */\\n }\\n }\\n\\n\\n @each $max in $layouts {\\n .gallery[data-visible=\\\"#{$max}\\\"] & {\\n &:nth-child(n + #{$max + 1}) {\\n display: none;\\n }\\n }\\n }\\n\\n .media[data-ratio=\\\"1:1\\\"] {\\n width: calc(100% - 16px);\\n height: calc(100% - 16px);\\n padding-bottom: calc(100% - 16px);\\n margin: 8px;\\n\\n @include from(l) {\\n width: calc(100% - 24px);\\n height: calc(100% - 24px);\\n padding-bottom: calc(100% - 24px);\\n margin: 12px;\\n }\\n }\\n\\n &--hidden {\\n display: none;\\n }\\n\\n /* --columns: 2;\\n flex-basis: map-get($column-widths, 2);\\n margin-bottom: spacing();\\n\\n @include from(s) {\\n --columns: 3;\\n flex-basis: map-get($column-widths, 3);\\n margin-bottom: spacing(2);\\n }\\n\\n @include from(m) {\\n /* .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n --columns: 4;\\n flex-basis: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n --columns: 5;\\n flex-basis: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n --columns: 6;\\n flex-basis: map-get($column-widths, 6);\\n }\\n } */\\n }\\n\\n &__more {\\n background: rgba(0, 0, 0, 0.5);\\n color: palette(white);\\n pointer-events: none;\\n font-size: 2rem;\\n font-weight: $font-weight--bold;\\n position: absolute;\\n right: 0;\\n bottom: spacing();\\n height: 0;\\n\\n /* padding-bottom: map-get($column-widths, 2);\\n width: map-get($column-widths, 2);\\n\\n @include from(s) {\\n bottom: spacing(2);\\n padding-bottom: map-get($column-widths, 3);\\n width: map-get($column-widths, 3);\\n }\\n\\n @include from(m) {\\n .gallery[data-max=\\\"5\\\"] &,\\n .gallery[data-max=\\\"9\\\"] & {\\n padding-bottom: map-get($column-widths, 4);\\n width: map-get($column-widths, 4);\\n }\\n }\\n\\n @include from(xl) {\\n .gallery[data-max=\\\"10\\\"] & {\\n padding-bottom: map-get($column-widths, 5);\\n width: map-get($column-widths, 5);\\n }\\n\\n .gallery[data-max=\\\"12\\\"] & {\\n padding-bottom: map-get($column-widths, 6);\\n width: map-get($column-widths, 6);\\n }\\n } */\\n }\\n\\n &__extra {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n }\\n}\\n\",\".hamburger {\\n cursor: pointer;\\n\\n &__box {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: space-between;\\n height: 0.75rem;\\n width: 1.125rem;\\n }\\n\\n &__layer {\\n background-color: palette(black);\\n display: block;\\n height: 0.125rem;\\n width: 100%;\\n\\n .nav-in-hero .header & {\\n background-color: palette(white);\\n }\\n }\\n}\\n\",\"$header-color--background: palette(white);\\n\\n$logo-width--large: 5rem;\\n$logo-width--small: 5rem;\\n\\n.header {\\n &, &__inner {\\n // @TODO: Reassess specificity\\n .nav-in-hero &,\\n .nav-in-hero--front.home & {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n }\\n }\\n\\n &__inner {\\n background-color: $header-color--background;\\n height: $header-height--mobile;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n\\n position: relative;\\n padding: spacing(2 4);\\n transition: background-color 0.4s $transition,\\n box-shadow 0.4s $transition;\\n width: 100%;\\n z-index: 100;\\n\\n @include from(m) {\\n padding: spacing(4);\\n height: $header-height;\\n }\\n\\n .nav-in-hero &,\\n .nav-in-hero--front.home & {\\n background-color: transparent;\\n border: 0;\\n }\\n\\n .sticky-header .header & {\\n background-color: $header-color--background;\\n border-bottom: palette(white, dark) 1px solid;\\n box-shadow: rgba(0, 0, 0, 0.075) 0 0 1.5rem;\\n transform: translateY(-100%);\\n transition: transform 0s linear;\\n position: fixed;\\n\\n &.is-up,\\n &.is-down {\\n transition: transform 0.4s $transition;\\n }\\n\\n &.is-up {\\n transform: translateY(-100%);\\n }\\n\\n &.is-down {\\n transform: translateY(0);\\n }\\n }\\n\\n .brand {\\n display: block;\\n position: relative;\\n height: 100%;\\n width: $logo-width--small;\\n\\n @include from(l) {\\n width: $logo-width--large;\\n }\\n\\n .logo {\\n height: 100%;\\n width: auto;\\n }\\n }\\n\\n .nav--primary {\\n flex-grow: 1;\\n }\\n }\\n}\\n\",\".hero {\\n position: relative;\\n\\n .internal &,\\n .single & {\\n .hero__wrap {\\n min-height: 20rem;\\n\\n @include from(s) {\\n min-height: 25rem;\\n }\\n\\n @include from(m) {\\n min-height: 30rem;\\n }\\n\\n @include from(l) {\\n min-height: 35rem;\\n }\\n }\\n }\\n\\n .home & {\\n height: calc(100vh - #{$header-height--mobile});\\n min-height: 30rem;\\n\\n @include from(m) {\\n min-height: 35rem;\\n height: calc(100vh - #{$header-height});\\n }\\n\\n @include from(l) {\\n min-height: 45rem;\\n }\\n\\n .swiper-container {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n\\n .swiper-slide {\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n justify-content: center;\\n\\n .hero__inner {\\n position: relative;\\n }\\n }\\n\\n .slider__pagination {\\n position: absolute;\\n z-index: 2;\\n }\\n }\\n }\\n\\n &__wrap {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n position: relative;\\n height: 100%;\\n }\\n\\n &__media {\\n width: 100%;\\n z-index: -2;\\n\\n .hero--banner & {\\n order: 2;\\n }\\n }\\n\\n &.content-align {\\n &--center {\\n .hero__content {\\n text-align: center;\\n\\n &__inner {\\n margin: auto;\\n }\\n }\\n }\\n\\n &--right {\\n .hero__content {\\n text-align: right;\\n\\n &__inner {\\n margin-right: 0;\\n margin-left: auto;\\n }\\n }\\n }\\n }\\n\\n .bg-img {\\n @include o-overlay;\\n }\\n\\n &__video {\\n @include o-overlay;\\n\\n + .hero__media {\\n .bg-img {\\n &::after {\\n background-color: transparent;\\n }\\n }\\n }\\n }\\n\\n &__inner {\\n width: 100%;\\n z-index: 1;\\n }\\n\\n &__content {\\n @include o-box;\\n color: palette(white);\\n\\n &__inner {\\n .home & {\\n max-width: $max-width--narrow;\\n }\\n }\\n\\n .hero--full & {\\n color: palette(white);\\n }\\n\\n .hero--banner & {\\n @include o-wrapper;\\n padding-top: spacing(3);\\n padding-bottom: spacing(5);\\n width: 100%;\\n\\n @include from(m) {\\n padding-top: spacing(6);\\n padding-bottom: spacing(10);\\n }\\n }\\n\\n .meta {\\n margin-bottom: spacing(4);\\n color: palette(white);\\n\\n &:last-child {\\n margin-bottom: 0;\\n }\\n\\n a {\\n color: palette(white);\\n\\n &:hover,\\n &:focus {\\n color: $color--link;\\n }\\n }\\n }\\n }\\n\\n &[data-nav-buttons=\\\"true\\\"] {\\n .nav--meta {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n width: 100%;\\n\\n @include from(m) {\\n display: none;\\n }\\n\\n .links {\\n width: 100%;\\n display: flex;\\n\\n .button {\\n width: 100%;\\n text-align: center;\\n\\n @include at(xs) {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n }\\n }\\n\\n .button + .button {\\n margin-left: 1px;\\n }\\n }\\n }\\n }\\n}\\n\",\"@mixin o-content {\\n // @include clearfix();\\n margin-right: auto;\\n margin-left: auto;\\n max-width: $max-width--narrow;\\n\\n picture {\\n margin-bottom: spacing(3);\\n }\\n}\\n\\n@mixin o-wrapper {\\n // @include clearfix();\\n margin-right: auto;\\n margin-left: auto;\\n max-width: $max-width;\\n\\n @include from(l) {\\n max-width: $max-width--wide;\\n }\\n\\n @include from(xl) {\\n max-width: $max-width--xwide;\\n }\\n}\\n\\n@mixin o-wrapper--narrow {\\n margin-right: auto;\\n margin-left: auto;\\n max-width: $max-width--wide;\\n\\n @include from(xl) {\\n max-width: $max-width--xwide;\\n }\\n}\\n\",\".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n\\n &--large {\\n height: 2.5rem;\\n width: 2.5rem;\\n }\\n}\\n\\n.fade-lazyload {\\n transition-property: opacity;\\n transition-duration: 0.3s;\\n transition-timing-function: $transition;\\n opacity: 0;\\n\\n &.lazyloaded {\\n opacity: 1;\\n }\\n}\\n\",\".list {\\n @include o-list--bare;\\n\\n &__item {\\n @include o-list__item;\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n\\n &__icon {\\n fill: palette(brand);\\n line-height: 0;\\n position: relative;\\n height: 1.5rem;\\n width: 1.5rem;\\n margin-right: spacing(2);\\n\\n .icon {\\n position: absolute;\\n top: 50%;\\n left: 0;\\n transform: translate(0, -50%);\\n }\\n }\\n\\n &.has-description {\\n .list__item__inner {\\n display: block;\\n }\\n }\\n }\\n}\\n\",\".map {\\n &__legend {\\n display: none;\\n }\\n\\n &__canvas {\\n height: 100vw;\\n }\\n\\n @include from(s) {\\n display: flex;\\n //min-height: 75vh;\\n\\n &__legend {\\n background-color: palette(white);\\n display: block;\\n min-width: 25vw;\\n\\n .component.u-background-color--light + .map & {\\n background-color: palette(white, dark);\\n }\\n }\\n\\n &__handler {\\n flex-grow: 1;\\n }\\n\\n &__canvas {\\n height: 100%;\\n }\\n }\\n}\\n\\n.legend {\\n padding: spacing(4);\\n\\n &__list {\\n @include o-list--bare;\\n }\\n\\n &__pin {\\n @include o-list__item;\\n cursor: pointer;\\n transition: color 0.4s ease;\\n\\n &.is-active,\\n &:hover {\\n color: $color--link;\\n }\\n\\n &:active {\\n color: darken($color--link, 5%);\\n }\\n\\n * {\\n pointer-events: none;\\n }\\n }\\n}\\n\",\".media {\\n background-color: palette(grey, dark);\\n position: relative;\\n height: auto;\\n padding-bottom: 100%;\\n overflow: hidden;\\n width: 100%;\\n\\n &[data-ratio=\\\"1:1\\\"] {\\n padding-bottom: 100%;\\n }\\n\\n &[data-ratio=\\\"16:9\\\"] {\\n padding-bottom: percentage(9 / 16);\\n }\\n\\n &[data-ratio=\\\"21:9\\\"] {\\n padding-bottom: percentage(9 / 21);\\n }\\n\\n * {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n }\\n\\n picture,\\n img {\\n object-fit: cover;\\n }\\n}\\n\",\".meta {\\n display: flex;\\n line-height: 1.2;\\n\\n &__prop {\\n border-left: $color--border 1px solid;\\n padding-left: spacing();\\n margin-left: spacing();\\n\\n &:first-child {\\n border: none;\\n padding-left: 0;\\n margin-left: 0;\\n }\\n }\\n\\n a {\\n color: $color--text;\\n font-weight: $font-weight--body;\\n\\n &:hover {\\n color: $color--link;\\n }\\n\\n &:active {\\n color: darken($color--link, 10%);\\n }\\n }\\n}\\n\",\".nav {\\n // &--desktop {\\n // display: flex;\\n // align-items: center;\\n // justify-content: space-around;\\n // }\\n\\n // &--meta {\\n // justify-content: flex-end;\\n // }\\n\\n &--mobile {\\n margin: 0;\\n padding: 0;\\n\\n .flyout__close {\\n padding: 0;\\n position: relative;\\n }\\n\\n background: palette(white);\\n border-left: 1px solid palette(grey, lighter);\\n overflow-x: hidden;\\n overflow-y: auto;\\n position: fixed;\\n top: 0;\\n right: 0;\\n -webkit-overflow-scrolling: touch;\\n transform: translateX(100%);\\n transition: transform 0.4s $transition--ease-out-cubic;\\n width: 100%;\\n height: 100%;\\n z-index: 1001;\\n\\n .nav__inner {\\n //min-height: 100%;\\n padding: spacing(12 4);\\n position: relative;\\n\\n @include at(s) {\\n @media (orientation: landscape) {\\n padding: spacing(12 4 4);\\n }\\n }\\n\\n @include from(m) {\\n padding: spacing(20 8);\\n }\\n\\n @include from(l) {\\n padding: spacing(23 10);\\n }\\n }\\n\\n a {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n transform: translateZ(0);\\n transition: transform 0.3s, opacity 0.3s, color 0.4s ease;\\n will-change: transform, opacity;\\n white-space: nowrap;\\n }\\n\\n .no-js & {\\n position: relative;\\n height: auto;\\n width: 100%;\\n overflow: visible;\\n visibility: visible;\\n z-index: 2;\\n }\\n\\n &__contact {\\n padding-top: spacing(4);\\n\\n .contact-info {\\n text-align: left;\\n\\n > ul {\\n margin-bottom: 0;\\n\\n li {\\n padding: spacing(1 0);\\n }\\n }\\n }\\n }\\n\\n &__buttons {\\n padding-top: spacing(8);\\n text-align: center;\\n\\n .button {\\n margin-bottom: spacing();\\n width: 90%;\\n }\\n }\\n\\n &__social {\\n margin-top: spacing(4);\\n\\n .social {\\n margin-bottom: 0;\\n }\\n }\\n\\n .links {\\n .button {\\n display: block;\\n text-align: center;\\n max-width: 350px;\\n }\\n\\n .button + .button {\\n margin-top: 1rem;\\n }\\n }\\n\\n .nav__footer {\\n margin-top: 4rem;\\n }\\n }\\n}\\n\\n.menu {\\n &--desktop {\\n @include o-list--bare;\\n\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n width: 100%;\\n\\n .menu__item {\\n line-height: 1.5;\\n margin-right: spacing(6);\\n position: relative;\\n\\n &--parent-link {\\n > .icon {\\n content: url(../images/symbols/chevron-up.svg);\\n fill: $color--text;\\n display: block;\\n height: 1.5rem;\\n width: 1.5rem;\\n transform: translate(-50%, 0) scaleY(-1);\\n transition: transform 0.3s $transition, fill 0.3s $transition;\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n // margin-top: -0.125rem;\\n z-index: 15;\\n\\n .nav-in-hero:not(.sticky-header) & {\\n fill: palette(white);\\n }\\n }\\n\\n &.is-expanded {\\n > .icon {\\n transform: translate(-50%, 0) scaleY(1);\\n\\n .nav-in-hero:not(.sticky-header) & {\\n fill: $color--text;\\n }\\n }\\n }\\n }\\n\\n // @TODO: Fix\\n // &.is-active {\\n // &::after {\\n // content: '';\\n // background-color: $color--text;\\n // transition: background-color 0.4s ease;\\n // height: 0.125rem;\\n // width: 100%;\\n // position: absolute;\\n // top: 100%;\\n // left: 0;\\n\\n // .nav-in-hero:not(.sticky-header) & {\\n // background-color: palette(white);\\n // }\\n // }\\n\\n // &:hover {\\n // &::after {\\n // &,\\n // .nav-in-hero:not(.sticky-header) & {\\n // background-color: $color--link;\\n // }\\n // }\\n // }\\n // }\\n\\n a {\\n color: $color--text;\\n display: block;\\n // font-size: 1rem;\\n font-weight: $font-weight--body;\\n\\n &:hover {\\n color: $color--link;\\n }\\n\\n .nav-in-hero:not(.sticky-header) & {\\n color: palette(white);\\n\\n &:hover {\\n color: $color--link;\\n }\\n }\\n }\\n\\n .sub-menu {\\n background-color: palette(white);\\n box-shadow: 0 0.25rem 3rem rgba(0, 0, 0, 0.12);\\n opacity: 0;\\n position: absolute;\\n top: 85%;\\n left: 50%;\\n margin: 0;\\n list-style: none;\\n margin-top: 1.25rem;\\n min-width: 11rem;\\n padding: spacing(3 4);\\n transform: translate(-50%, 1rem);\\n transition: transform 0.4s ease, opacity 0.2s ease, visibility 0.5s ease;\\n width: rem-calc(400);\\n visibility: hidden;\\n z-index: 10;\\n\\n &::before {\\n content: '';\\n background-color: palette(white);\\n box-shadow: 0 -0.125rem 0.125rem rgba(0, 0, 0, 0.05);\\n height: 1.25rem;\\n width: 2.25rem;\\n left: 50%;\\n position: absolute;\\n bottom: 100%;\\n transform: translateX(-50%) translateY(100%);\\n transition: transform 0.2s $transition;\\n }\\n\\n .menu__item {\\n line-height: 1.2;\\n margin-bottom: spacing(3);\\n\\n &:last-child {\\n margin-bottom: 0;\\n }\\n\\n a {\\n &,\\n .nav-in-hero:not(.sticky-header) & {\\n color: $color--text;\\n\\n &:hover {\\n color: $color--link;\\n }\\n }\\n }\\n }\\n }\\n\\n &.is-expanded {\\n .sub-menu {\\n opacity: 1;\\n transform: translate(-50%, 0);\\n visibility: visible;\\n\\n &::before {\\n transform: translateX(-50%);\\n }\\n }\\n }\\n }\\n }\\n\\n &--mobile {\\n position: relative;\\n // right: 0;\\n // z-index: 20000;\\n\\n .menu__wrap {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n width: 100%;\\n }\\n\\n .menu__level {\\n background: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n overflow: hidden;\\n list-style-type: none;\\n height: auto;\\n visibility: hidden;\\n margin: 0;\\n padding: 0;\\n width: 100%;\\n\\n &--current {\\n visibility: visible;\\n }\\n\\n &.animate-outToRight .menu__item {\\n animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n }\\n\\n &.animate-outToLeft .menu__item {\\n animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n }\\n\\n &.animate-inFromLeft .menu__item {\\n animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n }\\n\\n &.animate-inFromRight .menu__item {\\n animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);\\n }\\n }\\n\\n .menu__item {\\n display: block;\\n margin: 0;\\n\\n &:last-child {\\n .menu__link {\\n border-bottom: 0;\\n }\\n }\\n }\\n\\n .menu__link {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n color: $color--text;\\n fill: $color--text;\\n font-size: 1.25rem;\\n font-weight: $font-weight--regular;\\n line-height: 1;\\n position: relative;\\n padding: spacing(1 0);\\n text-transform: none;\\n\\n > * {\\n pointer-events: none;\\n }\\n\\n .icon {\\n height: 1.25rem;\\n width: 1.25rem;\\n margin-left: spacing();\\n }\\n\\n &:hover {\\n color: palette(brand);\\n fill: palette(brand);\\n }\\n }\\n\\n .menu__back {\\n background: palette(white);\\n color: $color--text;\\n cursor: pointer;\\n border: 0;\\n bottom: 100%;\\n right: 0;\\n top: spacing(-9);\\n display: flex;\\n align-items: center;\\n font-weight: $font-weight--bold;\\n line-height: 2.5;\\n height: 2rem;\\n padding: 0;\\n position: absolute;\\n opacity: 1;\\n transform: translateX(0);\\n transition: transform 0.25s $transition--ease-out-cubic, opacity 0.25s $transition--ease-out-cubic, color 0.4s ease;\\n z-index: 100;\\n\\n @include from(m) {\\n top: spacing(-15);\\n right: spacing(-4);\\n }\\n\\n &.is-hidden {\\n pointer-events: none;\\n opacity: 0;\\n transform: translateX(20px);\\n }\\n\\n .icon {\\n fill: $color--text;\\n transition: fill 0.4s ease;\\n }\\n\\n &:hover,\\n &:focus {\\n color: palette(brand);\\n outline: none;\\n\\n .icon {\\n fill: palette(brand);\\n }\\n }\\n }\\n\\n [class^='animate-'],\\n [class*=' animate-'] {\\n visibility: visible;\\n }\\n }\\n}\\n\",\".content,\\n.main {\\n position: relative;\\n}\\n\\n.page {\\n &__header {\\n padding: spacing(5 4 0);\\n\\n @include from(s) {\\n padding: spacing(5 0 0);\\n }\\n }\\n\\n &__inner {\\n @include o-box(horizontal);\\n }\\n\\n &__content {\\n @include o-wrapper;\\n }\\n\\n &__body {\\n padding-top: spacing(4);\\n\\n @include from(s) {\\n padding-top: spacing(10);\\n }\\n }\\n}\\n\",\".wp-pagenavi {\\n display: flex;\\n justify-content: center;\\n margin-top: spacing(5);\\n\\n .pages {\\n @include hidden-visually;\\n }\\n\\n a,\\n span {\\n border: 0;\\n color: $color--text;\\n margin: 0 spacing();\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n // transition: background-color $transition 0.3s, color $transition 0.3s;\\n height: 2rem;\\n width: 2rem;\\n }\\n\\n a {\\n &:hover {\\n color: $color--link;\\n }\\n }\\n\\n .current {\\n background: palette(brand);\\n color: palette(white);\\n font-weight: $font-weight--bold;\\n }\\n\\n .extend {\\n display: none;\\n }\\n\\n .previouspostslink,\\n .nextpostslink {\\n @include hide-text;\\n }\\n\\n .previouspostslink {\\n @include chevron(left);\\n }\\n\\n .nextpostslink {\\n @include chevron(right);\\n }\\n}\\n\",\"@mixin chevron($direction: right, $hover: true) {\\n position: relative;\\n\\n &::before,\\n &::after {\\n content: '';\\n border-radius: 0.0625em;\\n display: block;\\n position: absolute;\\n left: 50%;\\n background-color: #4a4a4a;\\n transition: background-color 0.4s ease;\\n height: 0.125em;\\n width: 0.5em;\\n }\\n\\n &::before {\\n bottom: 50%;\\n\\n @if $direction == right {\\n transform: translate(-50%, -0.1em) rotate(45deg);\\n } @else {\\n transform: translate(-50%, -0.1em) rotate(-45deg);\\n }\\n }\\n\\n &::after {\\n top: 50%;\\n\\n @if $direction == right {\\n transform: translate(-50%, 0.1em) rotate(-45deg);\\n } @else {\\n transform: translate(-50%, 0.1em) rotate(45deg);\\n }\\n }\\n\\n @if $hover == true {\\n &:hover {\\n &::before,\\n &::after {\\n background-color: $color--link;\\n }\\n }\\n }\\n}\\n\",\".featured-posts {\\n &__list {\\n @include o-list--teasers;\\n }\\n\\n @include to(l) {\\n .post:nth-child(5) {\\n display: none;\\n }\\n }\\n\\n @include to(m) {\\n .post:nth-child(4) {\\n display: none;\\n }\\n }\\n\\n @include to(s) {\\n .post:nth-child(3) {\\n display: none;\\n }\\n }\\n}\\n\\n.post {\\n &__inner {\\n @include o-box;\\n }\\n\\n &__content {\\n @include o-content;\\n }\\n\\n &--teaser {\\n @include o-list__item--teaser;\\n color: $color--text;\\n display: block;\\n font-weight: $font-weight--body;\\n text-align: left;\\n margin-bottom: spacing(5);\\n\\n &:last-child {\\n margin-bottom: 0;\\n }\\n\\n .post__content {\\n padding-top: spacing(5);\\n }\\n\\n .post__summary {\\n //font-size: 1rem;\\n }\\n\\n .meta {\\n font-size: 0.875rem;\\n // justify-content: center;\\n margin-bottom: spacing();\\n }\\n\\n &.post--featured {\\n margin-right: 0;\\n\\n .post__content {\\n margin-right: 0;\\n margin-left: 0;\\n }\\n }\\n }\\n}\\n\",\"// @TODO: Remove slides per view option for slide preview\\n// @TODO: Test with fewer than 4 slides\\n.slider {\\n text-align: center;\\n\\n @include from(s) {\\n padding-top: 24px;\\n }\\n\\n &.has-previews {\\n .swiper-slide {\\n height: calc(100% - 4rem);\\n width: calc(100% - 4rem);\\n transition: transform $transition 0.3s, transform-origin $transition 0.3s;\\n transform: scale(0.9);\\n transform-origin: right center;\\n\\n &.swiper-slide-active,\\n &.swiper-slide-duplicate-active {\\n transform: scale(1);\\n }\\n\\n &.swiper-slide-active {\\n &,\\n & ~ .swiper-slide {\\n transform-origin: left center;\\n }\\n }\\n\\n @include from(s) {\\n height: calc(70% - 2rem);\\n width: calc(70% - 2rem);\\n }\\n\\n @include from(m) {\\n height: calc(#{percentage(1/3)} - 2.5rem);\\n width: calc(#{percentage(1/3)} - 2.5rem);\\n\\n &.swiper-slide-prev,\\n &.swiper-slide-active,\\n &.swiper-slide-next,\\n &.swiper-slide-duplicate-prev,\\n &.swiper-slide-duplicate-active,\\n &.swiper-slide-duplicate-next {\\n transform: scale(1);\\n }\\n }\\n\\n @include from(l) {\\n height: calc(25% - (3 / 4) * 1rem);\\n width: calc(25% - (3 / 4) * 1rem);\\n transform: scale(1);\\n }\\n }\\n }\\n\\n &__navigation {\\n cursor: pointer;\\n fill: rgba(255, 255, 255, 0.5);\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n transition: fill 0.4s ease;\\n line-height: 0;\\n z-index: 1;\\n\\n .icon {\\n height: 4rem;\\n width: 4rem;\\n }\\n\\n &--previous {\\n left: 0;\\n }\\n\\n &--next {\\n right: 0;\\n }\\n\\n &:hover {\\n fill: palette(brand);\\n }\\n\\n &.swiper-button-disabled {\\n cursor: default;\\n fill: rgba(255, 255, 255, 0.2);\\n }\\n }\\n\\n &__pagination {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: spacing(2 0);\\n }\\n\\n &__bullet {\\n background-color: palette(grey, lighter);\\n // border: palette(grey) 2px solid;\\n border-radius: 100%;\\n box-shadow: inset 0 0 0 0.375rem rgba(0, 0, 0, 0);\\n cursor: pointer;\\n display: block;\\n height: 0.75rem;\\n width: 0.75rem;\\n margin: spacing(0 0.5);\\n transition: box-shadow 0.3s ease;\\n\\n &:hover, &:focus {\\n box-shadow: inset 0 0 0 0.375rem palette(brand);\\n }\\n\\n &.is-active {\\n box-shadow: inset 0 0 0 2px palette(brand);\\n }\\n }\\n}\\n\",\".social {\\n display: flex;\\n\\n &__link {\\n line-height: 0;\\n margin-right: spacing(2);\\n\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n}\\n\",\"// @TODO: Update styles\\n.table {\\n text-align: center;\\n\\n &__content {\\n text-align: left;\\n width: 100%;\\n\\n th, td {\\n padding: spacing(2 3);\\n\\n &:first-child {\\n @include to(xs) {\\n background-color: #303134;\\n color: palette(white);\\n }\\n }\\n\\n @include from(s) {\\n // padding: spacing(3 2);\\n // text-align: center;\\n\\n // &:first-child {\\n // text-align: left;\\n // }\\n }\\n }\\n\\n thead {\\n background-color: #303134;\\n color: palette(white);\\n\\n th {\\n display: none;\\n font-weight: $font-weight--bold;\\n // text-transform: uppercase;\\n\\n @include from(s) {\\n display: table-cell;\\n }\\n }\\n }\\n\\n tbody {\\n tr {\\n &:nth-child(odd) {\\n background-color: #f4f4f5;\\n }\\n\\n &:nth-child(even) {\\n background-color: #eaeaea;\\n }\\n }\\n\\n td {\\n &:first-child {\\n font-weight: $font-weight--bold;\\n }\\n\\n @include to(xs) {\\n display: block;\\n\\n &::before {\\n content: attr(data-th) ': '; // who knew you could do this? The internet, that's who.\\n font-weight: bold;\\n\\n // optional stuff to make it look nicer\\n display: inline-block;\\n width: 50%; // magic number :( adjust according to your own content\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\".team {\\n &__list {\\n @include o-list--teasers;\\n }\\n}\\n\\n.team-member {\\n &__head-shot {\\n overflow: hidden;\\n max-width: 8rem;\\n margin: 0 0 spacing(3);\\n }\\n\\n &--teaser {\\n @include o-list__item--teaser;\\n color: $color--text;\\n display: block;\\n margin-bottom: spacing(5);\\n text-align: left;\\n flex-basis: calc(#{percentage(1/2)} - #{spacing(2 / 2)});\\n\\n &:nth-of-type(2n) {\\n margin-left: 1rem;\\n }\\n\\n @include from(s) {\\n flex-basis: calc(#{percentage(1/3)} - #{spacing(8 / 3)});\\n margin-right: 2rem;\\n\\n &:nth-of-type(2n) {\\n margin-left: 0;\\n margin-right: 2rem;\\n }\\n\\n &:nth-of-type(3n) {\\n margin-right: 0;\\n }\\n }\\n\\n @include from(l) {\\n flex-basis: calc(#{percentage(1/4)} - #{spacing(30 / 4)});\\n margin-right: spacing(10);\\n\\n &:nth-of-type(2n),\\n &:nth-of-type(3n) {\\n margin-right: spacing(10);\\n }\\n\\n &:nth-of-type(4n) {\\n margin-right: 0;\\n }\\n }\\n\\n .team-member__title {\\n margin-top: spacing(-2);\\n }\\n }\\n}\\n\",\".text-image {\\n .text-image__wrapper {\\n @include from(s) {\\n display: flex;\\n }\\n }\\n\\n &__image,\\n &__content {\\n @include from(s) {\\n flex: 0 0 50%;\\n }\\n }\\n\\n &__content {\\n @include from(s) {\\n display: flex;\\n align-items: center;\\n }\\n }\\n\\n &__inner {\\n @include from(s) {\\n padding-left: spacing(4);\\n }\\n\\n @include from(l) {\\n padding-left: spacing(8);\\n }\\n }\\n\\n &__image {\\n margin-bottom: spacing(4);\\n\\n @include from(s) {\\n margin-bottom: 0;\\n }\\n\\n .image-container {\\n position: relative;\\n padding-right: spacing(2);\\n\\n @include from(m) {\\n padding-right: spacing(4);\\n }\\n\\n &::before,\\n &::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n content: \\\"\\\";\\n height: 100%;\\n background-color: #ececec;\\n width: 5px;\\n }\\n\\n &::before {\\n display: none;\\n }\\n\\n &::after {\\n background-color: palette(brand);\\n height: 80%;\\n }\\n\\n &__inner {\\n position: relative;\\n width: 100%;\\n padding-bottom: 65%;\\n\\n img {\\n box-shadow: 0 0 20px #cecece;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n }\\n }\\n }\\n }\\n}\\n\\n.text-image[data-content-alignment=\\\"left\\\"] {\\n .text-image__image {\\n order: 2;\\n\\n .image-container {\\n padding-left: spacing(2);\\n\\n @include from(m) {\\n padding-left: spacing(4);\\n }\\n\\n &::before,\\n &::after {\\n left: 0;\\n right: auto;\\n }\\n }\\n }\\n\\n .text-image__inner {\\n @include from(s) {\\n padding-left: 0;\\n padding-right: spacing(4);\\n }\\n\\n @include from(l) {\\n padding-right: spacing(8);\\n }\\n }\\n}\\n\",\".tiles {\\n display: flex;\\n flex-direction: column;\\n\\n @include from(s) {\\n flex-direction: row;\\n }\\n\\n &__image {\\n position: relative;\\n height: 100vw;\\n\\n @include to(xs) {\\n order: 2;\\n }\\n\\n @include to(m) {\\n min-height: 49vw;\\n\\n img {\\n object-fit: cover;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n }\\n }\\n\\n @include from(s) {\\n height: auto;\\n width: 50%;\\n }\\n\\n .tiles[data-alignment=\\\"left\\\"] & {\\n order: 2;\\n }\\n }\\n\\n &__inner {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n\\n @include at(s) {\\n padding: spacing(4);\\n }\\n\\n @include from(s) {\\n width: 50%;\\n }\\n\\n @include from(l) {\\n padding-right: spacing(16);\\n padding-left: spacing(16);\\n }\\n }\\n}\\n\",\"h1, h2, h3, h4, h5, h6, p, ul, ol {\\n + .button {\\n margin-top: spacing(7);\\n }\\n}\\n\\n.small {\\n font-size: 0.75rem;\\n}\\n\",\".u-box {\\n @include o-box;\\n}\\n\",\"/* ==========================================================================\\n #CLEARFIX\\n ========================================================================== */\\n\\n/**\\n * Attach our clearfix mixin to a utility class.\\n */\\n\\n.u-clearfix {\\n @include clearfix();\\n}\\n\",\"@mixin clearfix() {\\n &::after {\\n content: \\\"\\\";\\n display: block;\\n clear: both;\\n }\\n}\\n\",\"/* ==========================================================================\\n #HIDE\\n ========================================================================== */\\n\\n/**\\n * Hide only visually, but have it available for screen readers:\\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\\n */\\n\\n.u-hidden-visually {\\n @include hidden-visually();\\n}\\n\\n/**\\n * Hide visually and from screen readers.\\n */\\n\\n.u-hidden {\\n display: none !important;\\n}\\n\\n/**\\n * Hide on small screens\\n */\\n\\n.u-hidden-small {\\n @include to(s) {\\n display: none;\\n }\\n}\\n\\n/**\\n * Hide on large screens\\n */\\n\\n.u-hidden-large {\\n @include from(m) {\\n display: none;\\n }\\n}\\n\",\".u-text-align--left {\\n text-align: left;\\n}\\n\\n.u-text-align--center {\\n text-align: center;\\n}\\n\\n.u-text-align--right {\\n text-align: right;\\n}\\n\",\"/* ==========================================================================\\n #WRAPPER\\n ========================================================================== */\\n\\n/**\\n * Page-level constraining and wrapping elements.\\n */\\n\\n.u-content {\\n @include o-content;\\n}\\n\\n.u-wrapper {\\n @include o-wrapper;\\n}\\n\\n.u-wrapper--narrow {\\n @include o-wrapper--narrow;\\n}\\n\\n.u-box {\\n @include o-box;\\n}\\n\",\"/*!\\n * baguetteBox.js\\n * @author feimosi\\n * @version 1.10.0\\n * @url https://github.com/feimosi/baguetteBox.js\\n */#baguetteBox-overlay{display:none;opacity:0;position:fixed;overflow:hidden;top:0;left:0;width:100%;height:100%;z-index:1000000;background-color:#222;background-color:rgba(0,0,0,.8);-webkit-transition:opacity .5s ease;transition:opacity .5s ease}#baguetteBox-overlay.visible{opacity:1}#baguetteBox-overlay .full-image{display:inline-block;position:relative;width:100%;height:100%;text-align:center}#baguetteBox-overlay .full-image figure{display:inline;margin:0;height:100%}#baguetteBox-overlay .full-image img{display:inline-block;width:auto;height:auto;max-height:100%;max-width:100%;vertical-align:middle;-webkit-box-shadow:0 0 8px rgba(0,0,0,.6);-moz-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6)}#baguetteBox-overlay .full-image figcaption{display:block;position:absolute;bottom:0;width:100%;text-align:center;line-height:1.8;white-space:normal;color:#ccc;background-color:#000;background-color:rgba(0,0,0,.6);font-family:sans-serif}#baguetteBox-overlay .full-image:before{content:\\\"\\\";display:inline-block;height:50%;width:1px;margin-right:-1px}#baguetteBox-slider{position:absolute;left:0;top:0;height:100%;width:100%;white-space:nowrap;-webkit-transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,transform .4s ease;transition:left .4s ease,transform .4s ease,-webkit-transform .4s ease,-moz-transform .4s ease}#baguetteBox-slider.bounce-from-right{-webkit-animation:bounceFromRight .4s ease-out;animation:bounceFromRight .4s ease-out}#baguetteBox-slider.bounce-from-left{-webkit-animation:bounceFromLeft .4s ease-out;animation:bounceFromLeft .4s ease-out}@-webkit-keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@-webkit-keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}@keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}.baguetteBox-button#next-button,.baguetteBox-button#previous-button{top:50%;top:calc(50% - 30px);width:44px;height:60px}.baguetteBox-button{position:absolute;cursor:pointer;outline:0;padding:0;margin:0;border:0;-moz-border-radius:15%;border-radius:15%;background-color:#323232;background-color:rgba(50,50,50,.5);color:#ddd;font:1.6em sans-serif;-webkit-transition:background-color .4s ease;transition:background-color .4s ease}.baguetteBox-button:focus,.baguetteBox-button:hover{background-color:rgba(50,50,50,.9)}.baguetteBox-button#next-button{right:2%}.baguetteBox-button#previous-button{left:2%}.baguetteBox-button#close-button{top:20px;right:2%;right:calc(2% + 6px);width:30px;height:30px}.baguetteBox-button svg{position:absolute;left:0;top:0}.baguetteBox-spinner{width:40px;height:40px;display:inline-block;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px}.baguetteBox-double-bounce1,.baguetteBox-double-bounce2{width:100%;height:100%;-moz-border-radius:50%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:bounce 2s infinite ease-in-out;animation:bounce 2s infinite ease-in-out}.baguetteBox-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounce{0%,100%{-webkit-transform:scale(0);-moz-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1)}}\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/node_modules/cache-loader/dist/cjs.js!/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/node_modules/css-loader?{\"sourceMap\":true}!/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/node_modules/postcss-loader/lib?{\"config\":{\"path\":\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets/build\",\"ctx\":{\"open\":true,\"copy\":\"images/**/*\",\"proxyUrl\":\"http://localhost:3000\",\"cacheBusting\":\"[name]_[hash:8]\",\"paths\":{\"root\":\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap\",\"assets\":\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/resources/assets\",\"dist\":\"/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/dist\"},\"enabled\":{\"sourceMaps\":true,\"optimize\":false,\"cacheBusting\":false,\"watcher\":true},\"watch\":[\"app/**/*.php\",\"config/**/*.php\",\"resources/views/**/*.php\"],\"entry\":{\"main\":[\"./scripts/main.js\",\"./styles/main.scss\"],\"customizer\":[\"./scripts/customizer.js\"]},\"publicPath\":\"/wp-content/themes/friends-leap/dist/\",\"devUrl\":\"http://friendsleap.lndo.site\",\"env\":{\"production\":false,\"development\":true},\"manifest\":{}}},\"sourceMap\":true}!/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/node_modules/resolve-url-loader?{\"sourceMap\":true}!/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/node_modules/sass-loader/lib/loader.js?{\"sourceMap\":true}!/Users/andrew/Local Sites/oceans-11/wp-content/themes/friends_of_leap/node_modules/import-glob!./styles/main.scss\n// module id = 18\n// module chunks = 0","/*!\n * VERSION: 1.20.4\n * DATE: 2018-02-15\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2018, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n */\n(function(window, moduleName) {\n\n\t\t\"use strict\";\n\t\tvar _exports = {},\n\t\t\t_doc = window.document,\n\t\t\t_globals = window.GreenSockGlobals = window.GreenSockGlobals || window;\n\t\tif (_globals.TweenLite) {\n\t\t\treturn; //in case the core set of classes is already loaded, don't instantiate twice.\n\t\t}\n\t\tvar _namespace = function(ns) {\n\t\t\t\tvar a = ns.split(\".\"),\n\t\t\t\t\tp = _globals, i;\n\t\t\t\tfor (i = 0; i < a.length; i++) {\n\t\t\t\t\tp[a[i]] = p = p[a[i]] || {};\n\t\t\t\t}\n\t\t\t\treturn p;\n\t\t\t},\n\t\t\tgs = _namespace(\"com.greensock\"),\n\t\t\t_tinyNum = 0.0000000001,\n\t\t\t_slice = function(a) { //don't use Array.prototype.slice.call(target, 0) because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll()\n\t\t\t\tvar b = [],\n\t\t\t\t\tl = a.length,\n\t\t\t\t\ti;\n\t\t\t\tfor (i = 0; i !== l; b.push(a[i++])) {}\n\t\t\t\treturn b;\n\t\t\t},\n\t\t\t_emptyFunc = function() {},\n\t\t\t_isArray = (function() { //works around issues in iframe environments where the Array global isn't shared, thus if the object originates in a different window/iframe, \"(obj instanceof Array)\" will evaluate false. We added some speed optimizations to avoid Object.prototype.toString.call() unless it's absolutely necessary because it's VERY slow (like 20x slower)\n\t\t\t\tvar toString = Object.prototype.toString,\n\t\t\t\t\tarray = toString.call([]);\n\t\t\t\treturn function(obj) {\n\t\t\t\t\treturn obj != null && (obj instanceof Array || (typeof(obj) === \"object\" && !!obj.push && toString.call(obj) === array));\n\t\t\t\t};\n\t\t\t}()),\n\t\t\ta, i, p, _ticker, _tickerActive,\n\t\t\t_defLookup = {},\n\n\t\t\t/**\n\t\t\t * @constructor\n\t\t\t * Defines a GreenSock class, optionally with an array of dependencies that must be instantiated first and passed into the definition.\n\t\t\t * This allows users to load GreenSock JS files in any order even if they have interdependencies (like CSSPlugin extends TweenPlugin which is\n\t\t\t * inside TweenLite.js, but if CSSPlugin is loaded first, it should wait to run its code until TweenLite.js loads and instantiates TweenPlugin\n\t\t\t * and then pass TweenPlugin to CSSPlugin's definition). This is all done automatically and internally.\n\t\t\t *\n\t\t\t * Every definition will be added to a \"com.greensock\" global object (typically window, but if a window.GreenSockGlobals object is found,\n\t\t\t * it will go there as of v1.7). For example, TweenLite will be found at window.com.greensock.TweenLite and since it's a global class that should be available anywhere,\n\t\t\t * it is ALSO referenced at window.TweenLite. However some classes aren't considered global, like the base com.greensock.core.Animation class, so\n\t\t\t * those will only be at the package like window.com.greensock.core.Animation. Again, if you define a GreenSockGlobals object on the window, everything\n\t\t\t * gets tucked neatly inside there instead of on the window directly. This allows you to do advanced things like load multiple versions of GreenSock\n\t\t\t * files and put them into distinct objects (imagine a banner ad uses a newer version but the main site uses an older one). In that case, you could\n\t\t\t * sandbox the banner one like:\n\t\t\t *\n\t\t\t * \n\t\t\t * \n\t\t\t * \n\t\t\t * \n\t\t\t * \n\t\t\t *\n\t\t\t * @param {!string} ns The namespace of the class definition, leaving off \"com.greensock.\" as that's assumed. For example, \"TweenLite\" or \"plugins.CSSPlugin\" or \"easing.Back\".\n\t\t\t * @param {!Array.} dependencies An array of dependencies (described as their namespaces minus \"com.greensock.\" prefix). For example [\"TweenLite\",\"plugins.TweenPlugin\",\"core.Animation\"]\n\t\t\t * @param {!function():Object} func The function that should be called and passed the resolved dependencies which will return the actual class for this definition.\n\t\t\t * @param {boolean=} global If true, the class will be added to the global scope (typically window unless you define a window.GreenSockGlobals object)\n\t\t\t */\n\t\t\tDefinition = function(ns, dependencies, func, global) {\n\t\t\t\tthis.sc = (_defLookup[ns]) ? _defLookup[ns].sc : []; //subclasses\n\t\t\t\t_defLookup[ns] = this;\n\t\t\t\tthis.gsClass = null;\n\t\t\t\tthis.func = func;\n\t\t\t\tvar _classes = [];\n\t\t\t\tthis.check = function(init) {\n\t\t\t\t\tvar i = dependencies.length,\n\t\t\t\t\t\tmissing = i,\n\t\t\t\t\t\tcur, a, n, cl;\n\t\t\t\t\twhile (--i > -1) {\n\t\t\t\t\t\tif ((cur = _defLookup[dependencies[i]] || new Definition(dependencies[i], [])).gsClass) {\n\t\t\t\t\t\t\t_classes[i] = cur.gsClass;\n\t\t\t\t\t\t\tmissing--;\n\t\t\t\t\t\t} else if (init) {\n\t\t\t\t\t\t\tcur.sc.push(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (missing === 0 && func) {\n\t\t\t\t\t\ta = (\"com.greensock.\" + ns).split(\".\");\n\t\t\t\t\t\tn = a.pop();\n\t\t\t\t\t\tcl = _namespace(a.join(\".\"))[n] = this.gsClass = func.apply(func, _classes);\n\n\t\t\t\t\t\t//exports to multiple environments\n\t\t\t\t\t\tif (global) {\n\t\t\t\t\t\t\t_globals[n] = _exports[n] = cl; //provides a way to avoid global namespace pollution. By default, the main classes like TweenLite, Power1, Strong, etc. are added to window unless a GreenSockGlobals is defined. So if you want to have things added to a custom object instead, just do something like window.GreenSockGlobals = {} before loading any GreenSock files. You can even set up an alias like window.GreenSockGlobals = windows.gs = {} so that you can access everything like gs.TweenLite. Also remember that ALL classes are added to the window.com.greensock object (in their respective packages, like com.greensock.easing.Power1, com.greensock.TweenLite, etc.)\n\t\t\t\t\t\t\tif (typeof(module) !== \"undefined\" && module.exports) { //node\n\t\t\t\t\t\t\t\tif (ns === moduleName) {\n\t\t\t\t\t\t\t\t\tmodule.exports = _exports[moduleName] = cl;\n\t\t\t\t\t\t\t\t\tfor (i in _exports) {\n\t\t\t\t\t\t\t\t\t\tcl[i] = _exports[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (_exports[moduleName]) {\n\t\t\t\t\t\t\t\t\t_exports[moduleName][n] = cl;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (typeof(define) === \"function\" && define.amd){ //AMD\n\t\t\t\t\t\t\t\tdefine((window.GreenSockAMDPath ? window.GreenSockAMDPath + \"/\" : \"\") + ns.split(\".\").pop(), [], function() { return cl; });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (i = 0; i < this.sc.length; i++) {\n\t\t\t\t\t\t\tthis.sc[i].check();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.check(true);\n\t\t\t},\n\n\t\t\t//used to create Definition instances (which basically registers a class that has dependencies).\n\t\t\t_gsDefine = window._gsDefine = function(ns, dependencies, func, global) {\n\t\t\t\treturn new Definition(ns, dependencies, func, global);\n\t\t\t},\n\n\t\t\t//a quick way to create a class that doesn't have any dependencies. Returns the class, but first registers it in the GreenSock namespace so that other classes can grab it (other classes might be dependent on the class).\n\t\t\t_class = gs._class = function(ns, func, global) {\n\t\t\t\tfunc = func || function() {};\n\t\t\t\t_gsDefine(ns, [], function(){ return func; }, global);\n\t\t\t\treturn func;\n\t\t\t};\n\n\t\t_gsDefine.globals = _globals;\n\n\n\n/*\n * ----------------------------------------------------------------\n * Ease\n * ----------------------------------------------------------------\n */\n\t\tvar _baseParams = [0, 0, 1, 1],\n\t\t\tEase = _class(\"easing.Ease\", function(func, extraParams, type, power) {\n\t\t\t\tthis._func = func;\n\t\t\t\tthis._type = type || 0;\n\t\t\t\tthis._power = power || 0;\n\t\t\t\tthis._params = extraParams ? _baseParams.concat(extraParams) : _baseParams;\n\t\t\t}, true),\n\t\t\t_easeMap = Ease.map = {},\n\t\t\t_easeReg = Ease.register = function(ease, names, types, create) {\n\t\t\t\tvar na = names.split(\",\"),\n\t\t\t\t\ti = na.length,\n\t\t\t\t\tta = (types || \"easeIn,easeOut,easeInOut\").split(\",\"),\n\t\t\t\t\te, name, j, type;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tname = na[i];\n\t\t\t\t\te = create ? _class(\"easing.\"+name, null, true) : gs.easing[name] || {};\n\t\t\t\t\tj = ta.length;\n\t\t\t\t\twhile (--j > -1) {\n\t\t\t\t\t\ttype = ta[j];\n\t\t\t\t\t\t_easeMap[name + \".\" + type] = _easeMap[type + name] = e[type] = ease.getRatio ? ease : ease[type] || new ease();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\tp = Ease.prototype;\n\t\tp._calcEnd = false;\n\t\tp.getRatio = function(p) {\n\t\t\tif (this._func) {\n\t\t\t\tthis._params[0] = p;\n\t\t\t\treturn this._func.apply(null, this._params);\n\t\t\t}\n\t\t\tvar t = this._type,\n\t\t\t\tpw = this._power,\n\t\t\t\tr = (t === 1) ? 1 - p : (t === 2) ? p : (p < 0.5) ? p * 2 : (1 - p) * 2;\n\t\t\tif (pw === 1) {\n\t\t\t\tr *= r;\n\t\t\t} else if (pw === 2) {\n\t\t\t\tr *= r * r;\n\t\t\t} else if (pw === 3) {\n\t\t\t\tr *= r * r * r;\n\t\t\t} else if (pw === 4) {\n\t\t\t\tr *= r * r * r * r;\n\t\t\t}\n\t\t\treturn (t === 1) ? 1 - r : (t === 2) ? r : (p < 0.5) ? r / 2 : 1 - (r / 2);\n\t\t};\n\n\t\t//create all the standard eases like Linear, Quad, Cubic, Quart, Quint, Strong, Power0, Power1, Power2, Power3, and Power4 (each with easeIn, easeOut, and easeInOut)\n\t\ta = [\"Linear\",\"Quad\",\"Cubic\",\"Quart\",\"Quint,Strong\"];\n\t\ti = a.length;\n\t\twhile (--i > -1) {\n\t\t\tp = a[i]+\",Power\"+i;\n\t\t\t_easeReg(new Ease(null,null,1,i), p, \"easeOut\", true);\n\t\t\t_easeReg(new Ease(null,null,2,i), p, \"easeIn\" + ((i === 0) ? \",easeNone\" : \"\"));\n\t\t\t_easeReg(new Ease(null,null,3,i), p, \"easeInOut\");\n\t\t}\n\t\t_easeMap.linear = gs.easing.Linear.easeIn;\n\t\t_easeMap.swing = gs.easing.Quad.easeInOut; //for jQuery folks\n\n\n/*\n * ----------------------------------------------------------------\n * EventDispatcher\n * ----------------------------------------------------------------\n */\n\t\tvar EventDispatcher = _class(\"events.EventDispatcher\", function(target) {\n\t\t\tthis._listeners = {};\n\t\t\tthis._eventTarget = target || this;\n\t\t});\n\t\tp = EventDispatcher.prototype;\n\n\t\tp.addEventListener = function(type, callback, scope, useParam, priority) {\n\t\t\tpriority = priority || 0;\n\t\t\tvar list = this._listeners[type],\n\t\t\t\tindex = 0,\n\t\t\t\tlistener, i;\n\t\t\tif (this === _ticker && !_tickerActive) {\n\t\t\t\t_ticker.wake();\n\t\t\t}\n\t\t\tif (list == null) {\n\t\t\t\tthis._listeners[type] = list = [];\n\t\t\t}\n\t\t\ti = list.length;\n\t\t\twhile (--i > -1) {\n\t\t\t\tlistener = list[i];\n\t\t\t\tif (listener.c === callback && listener.s === scope) {\n\t\t\t\t\tlist.splice(i, 1);\n\t\t\t\t} else if (index === 0 && listener.pr < priority) {\n\t\t\t\t\tindex = i + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlist.splice(index, 0, {c:callback, s:scope, up:useParam, pr:priority});\n\t\t};\n\n\t\tp.removeEventListener = function(type, callback) {\n\t\t\tvar list = this._listeners[type], i;\n\t\t\tif (list) {\n\t\t\t\ti = list.length;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tif (list[i].c === callback) {\n\t\t\t\t\t\tlist.splice(i, 1);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tp.dispatchEvent = function(type) {\n\t\t\tvar list = this._listeners[type],\n\t\t\t\ti, t, listener;\n\t\t\tif (list) {\n\t\t\t\ti = list.length;\n\t\t\t\tif (i > 1) { \n\t\t\t\t\tlist = list.slice(0); //in case addEventListener() is called from within a listener/callback (otherwise the index could change, resulting in a skip)\n\t\t\t\t}\n\t\t\t\tt = this._eventTarget;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tlistener = list[i];\n\t\t\t\t\tif (listener) {\n\t\t\t\t\t\tif (listener.up) {\n\t\t\t\t\t\t\tlistener.c.call(listener.s || t, {type:type, target:t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlistener.c.call(listener.s || t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\n/*\n * ----------------------------------------------------------------\n * Ticker\n * ----------------------------------------------------------------\n */\n \t\tvar _reqAnimFrame = window.requestAnimationFrame,\n\t\t\t_cancelAnimFrame = window.cancelAnimationFrame,\n\t\t\t_getTime = Date.now || function() {return new Date().getTime();},\n\t\t\t_lastUpdate = _getTime();\n\n\t\t//now try to determine the requestAnimationFrame and cancelAnimationFrame functions and if none are found, we'll use a setTimeout()/clearTimeout() polyfill.\n\t\ta = [\"ms\",\"moz\",\"webkit\",\"o\"];\n\t\ti = a.length;\n\t\twhile (--i > -1 && !_reqAnimFrame) {\n\t\t\t_reqAnimFrame = window[a[i] + \"RequestAnimationFrame\"];\n\t\t\t_cancelAnimFrame = window[a[i] + \"CancelAnimationFrame\"] || window[a[i] + \"CancelRequestAnimationFrame\"];\n\t\t}\n\n\t\t_class(\"Ticker\", function(fps, useRAF) {\n\t\t\tvar _self = this,\n\t\t\t\t_startTime = _getTime(),\n\t\t\t\t_useRAF = (useRAF !== false && _reqAnimFrame) ? \"auto\" : false,\n\t\t\t\t_lagThreshold = 500,\n\t\t\t\t_adjustedLag = 33,\n\t\t\t\t_tickWord = \"tick\", //helps reduce gc burden\n\t\t\t\t_fps, _req, _id, _gap, _nextTime,\n\t\t\t\t_tick = function(manual) {\n\t\t\t\t\tvar elapsed = _getTime() - _lastUpdate,\n\t\t\t\t\t\toverlap, dispatch;\n\t\t\t\t\tif (elapsed > _lagThreshold) {\n\t\t\t\t\t\t_startTime += elapsed - _adjustedLag;\n\t\t\t\t\t}\n\t\t\t\t\t_lastUpdate += elapsed;\n\t\t\t\t\t_self.time = (_lastUpdate - _startTime) / 1000;\n\t\t\t\t\toverlap = _self.time - _nextTime;\n\t\t\t\t\tif (!_fps || overlap > 0 || manual === true) {\n\t\t\t\t\t\t_self.frame++;\n\t\t\t\t\t\t_nextTime += overlap + (overlap >= _gap ? 0.004 : _gap - overlap);\n\t\t\t\t\t\tdispatch = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (manual !== true) { //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\t\t\t\t\t\t_id = _req(_tick);\n\t\t\t\t\t}\n\t\t\t\t\tif (dispatch) {\n\t\t\t\t\t\t_self.dispatchEvent(_tickWord);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tEventDispatcher.call(_self);\n\t\t\t_self.time = _self.frame = 0;\n\t\t\t_self.tick = function() {\n\t\t\t\t_tick(true);\n\t\t\t};\n\n\t\t\t_self.lagSmoothing = function(threshold, adjustedLag) {\n\t\t\t\tif (!arguments.length) { //if lagSmoothing() is called with no arguments, treat it like a getter that returns a boolean indicating if it's enabled or not. This is purposely undocumented and is for internal use.\n\t\t\t\t\treturn (_lagThreshold < 1 / _tinyNum);\n\t\t\t\t}\n\t\t\t\t_lagThreshold = threshold || (1 / _tinyNum); //zero should be interpreted as basically unlimited\n\t\t\t\t_adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n\t\t\t};\n\n\t\t\t_self.sleep = function() {\n\t\t\t\tif (_id == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!_useRAF || !_cancelAnimFrame) {\n\t\t\t\t\tclearTimeout(_id);\n\t\t\t\t} else {\n\t\t\t\t\t_cancelAnimFrame(_id);\n\t\t\t\t}\n\t\t\t\t_req = _emptyFunc;\n\t\t\t\t_id = null;\n\t\t\t\tif (_self === _ticker) {\n\t\t\t\t\t_tickerActive = false;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_self.wake = function(seamless) {\n\t\t\t\tif (_id !== null) {\n\t\t\t\t\t_self.sleep();\n\t\t\t\t} else if (seamless) {\n\t\t\t\t\t_startTime += -_lastUpdate + (_lastUpdate = _getTime());\n\t\t\t\t} else if (_self.frame > 10) { //don't trigger lagSmoothing if we're just waking up, and make sure that at least 10 frames have elapsed because of the iOS bug that we work around below with the 1.5-second setTimout().\n\t\t\t\t\t_lastUpdate = _getTime() - _lagThreshold + 5;\n\t\t\t\t}\n\t\t\t\t_req = (_fps === 0) ? _emptyFunc : (!_useRAF || !_reqAnimFrame) ? function(f) { return setTimeout(f, ((_nextTime - _self.time) * 1000 + 1) | 0); } : _reqAnimFrame;\n\t\t\t\tif (_self === _ticker) {\n\t\t\t\t\t_tickerActive = true;\n\t\t\t\t}\n\t\t\t\t_tick(2);\n\t\t\t};\n\n\t\t\t_self.fps = function(value) {\n\t\t\t\tif (!arguments.length) {\n\t\t\t\t\treturn _fps;\n\t\t\t\t}\n\t\t\t\t_fps = value;\n\t\t\t\t_gap = 1 / (_fps || 60);\n\t\t\t\t_nextTime = this.time + _gap;\n\t\t\t\t_self.wake();\n\t\t\t};\n\n\t\t\t_self.useRAF = function(value) {\n\t\t\t\tif (!arguments.length) {\n\t\t\t\t\treturn _useRAF;\n\t\t\t\t}\n\t\t\t\t_self.sleep();\n\t\t\t\t_useRAF = value;\n\t\t\t\t_self.fps(_fps);\n\t\t\t};\n\t\t\t_self.fps(fps);\n\n\t\t\t//a bug in iOS 6 Safari occasionally prevents the requestAnimationFrame from working initially, so we use a 1.5-second timeout that automatically falls back to setTimeout() if it senses this condition.\n\t\t\tsetTimeout(function() {\n\t\t\t\tif (_useRAF === \"auto\" && _self.frame < 5 && (_doc || {}).visibilityState !== \"hidden\") {\n\t\t\t\t\t_self.useRAF(false);\n\t\t\t\t}\n\t\t\t}, 1500);\n\t\t});\n\n\t\tp = gs.Ticker.prototype = new gs.events.EventDispatcher();\n\t\tp.constructor = gs.Ticker;\n\n\n/*\n * ----------------------------------------------------------------\n * Animation\n * ----------------------------------------------------------------\n */\n\t\tvar Animation = _class(\"core.Animation\", function(duration, vars) {\n\t\t\t\tthis.vars = vars = vars || {};\n\t\t\t\tthis._duration = this._totalDuration = duration || 0;\n\t\t\t\tthis._delay = Number(vars.delay) || 0;\n\t\t\t\tthis._timeScale = 1;\n\t\t\t\tthis._active = (vars.immediateRender === true);\n\t\t\t\tthis.data = vars.data;\n\t\t\t\tthis._reversed = (vars.reversed === true);\n\n\t\t\t\tif (!_rootTimeline) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!_tickerActive) { //some browsers (like iOS 6 Safari) shut down JavaScript execution when the tab is disabled and they [occasionally] neglect to start up requestAnimationFrame again when returning - this code ensures that the engine starts up again properly.\n\t\t\t\t\t_ticker.wake();\n\t\t\t\t}\n\n\t\t\t\tvar tl = this.vars.useFrames ? _rootFramesTimeline : _rootTimeline;\n\t\t\t\ttl.add(this, tl._time);\n\n\t\t\t\tif (this.vars.paused) {\n\t\t\t\t\tthis.paused(true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t_ticker = Animation.ticker = new gs.Ticker();\n\t\tp = Animation.prototype;\n\t\tp._dirty = p._gc = p._initted = p._paused = false;\n\t\tp._totalTime = p._time = 0;\n\t\tp._rawPrevTime = -1;\n\t\tp._next = p._last = p._onUpdate = p._timeline = p.timeline = null;\n\t\tp._paused = false;\n\n\n\t\t//some browsers (like iOS) occasionally drop the requestAnimationFrame event when the user switches to a different tab and then comes back again, so we use a 2-second setTimeout() to sense if/when that condition occurs and then wake() the ticker.\n\t\tvar _checkTimeout = function() {\n\t\t\t\tif (_tickerActive && _getTime() - _lastUpdate > 2000 && ((_doc || {}).visibilityState !== \"hidden\" || !_ticker.lagSmoothing())) { //note: if the tab is hidden, we should still wake if lagSmoothing has been disabled.\n\t\t\t\t\t_ticker.wake();\n\t\t\t\t}\n\t\t\t\tvar t = setTimeout(_checkTimeout, 2000);\n\t\t\t\tif (t.unref) {\n\t\t\t\t\t// allows a node process to exit even if the timeout’s callback hasn't been invoked. Without it, the node process could hang as this function is called every two seconds.\n\t\t\t\t\tt.unref();\n\t\t\t\t}\n\t\t\t};\n\t\t_checkTimeout();\n\n\n\t\tp.play = function(from, suppressEvents) {\n\t\t\tif (from != null) {\n\t\t\t\tthis.seek(from, suppressEvents);\n\t\t\t}\n\t\t\treturn this.reversed(false).paused(false);\n\t\t};\n\n\t\tp.pause = function(atTime, suppressEvents) {\n\t\t\tif (atTime != null) {\n\t\t\t\tthis.seek(atTime, suppressEvents);\n\t\t\t}\n\t\t\treturn this.paused(true);\n\t\t};\n\n\t\tp.resume = function(from, suppressEvents) {\n\t\t\tif (from != null) {\n\t\t\t\tthis.seek(from, suppressEvents);\n\t\t\t}\n\t\t\treturn this.paused(false);\n\t\t};\n\n\t\tp.seek = function(time, suppressEvents) {\n\t\t\treturn this.totalTime(Number(time), suppressEvents !== false);\n\t\t};\n\n\t\tp.restart = function(includeDelay, suppressEvents) {\n\t\t\treturn this.reversed(false).paused(false).totalTime(includeDelay ? -this._delay : 0, (suppressEvents !== false), true);\n\t\t};\n\n\t\tp.reverse = function(from, suppressEvents) {\n\t\t\tif (from != null) {\n\t\t\t\tthis.seek((from || this.totalDuration()), suppressEvents);\n\t\t\t}\n\t\t\treturn this.reversed(true).paused(false);\n\t\t};\n\n\t\tp.render = function(time, suppressEvents, force) {\n\t\t\t//stub - we override this method in subclasses.\n\t\t};\n\n\t\tp.invalidate = function() {\n\t\t\tthis._time = this._totalTime = 0;\n\t\t\tthis._initted = this._gc = false;\n\t\t\tthis._rawPrevTime = -1;\n\t\t\tif (this._gc || !this.timeline) {\n\t\t\t\tthis._enabled(true);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.isActive = function() {\n\t\t\tvar tl = this._timeline, //the 2 root timelines won't have a _timeline; they're always active.\n\t\t\t\tstartTime = this._startTime,\n\t\t\t\trawTime;\n\t\t\treturn (!tl || (!this._gc && !this._paused && tl.isActive() && (rawTime = tl.rawTime(true)) >= startTime && rawTime < startTime + this.totalDuration() / this._timeScale - 0.0000001));\n\t\t};\n\n\t\tp._enabled = function (enabled, ignoreTimeline) {\n\t\t\tif (!_tickerActive) {\n\t\t\t\t_ticker.wake();\n\t\t\t}\n\t\t\tthis._gc = !enabled;\n\t\t\tthis._active = this.isActive();\n\t\t\tif (ignoreTimeline !== true) {\n\t\t\t\tif (enabled && !this.timeline) {\n\t\t\t\t\tthis._timeline.add(this, this._startTime - this._delay);\n\t\t\t\t} else if (!enabled && this.timeline) {\n\t\t\t\t\tthis._timeline._remove(this, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\n\t\tp._kill = function(vars, target) {\n\t\t\treturn this._enabled(false, false);\n\t\t};\n\n\t\tp.kill = function(vars, target) {\n\t\t\tthis._kill(vars, target);\n\t\t\treturn this;\n\t\t};\n\n\t\tp._uncache = function(includeSelf) {\n\t\t\tvar tween = includeSelf ? this : this.timeline;\n\t\t\twhile (tween) {\n\t\t\t\ttween._dirty = true;\n\t\t\t\ttween = tween.timeline;\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp._swapSelfInParams = function(params) {\n\t\t\tvar i = params.length,\n\t\t\t\tcopy = params.concat();\n\t\t\twhile (--i > -1) {\n\t\t\t\tif (params[i] === \"{self}\") {\n\t\t\t\t\tcopy[i] = this;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn copy;\n\t\t};\n\n\t\tp._callback = function(type) {\n\t\t\tvar v = this.vars,\n\t\t\t\tcallback = v[type],\n\t\t\t\tparams = v[type + \"Params\"],\n\t\t\t\tscope = v[type + \"Scope\"] || v.callbackScope || this,\n\t\t\t\tl = params ? params.length : 0;\n\t\t\tswitch (l) { //speed optimization; call() is faster than apply() so use it when there are only a few parameters (which is by far most common). Previously we simply did var v = this.vars; v[type].apply(v[type + \"Scope\"] || v.callbackScope || this, v[type + \"Params\"] || _blankArray);\n\t\t\t\tcase 0: callback.call(scope); break;\n\t\t\t\tcase 1: callback.call(scope, params[0]); break;\n\t\t\t\tcase 2: callback.call(scope, params[0], params[1]); break;\n\t\t\t\tdefault: callback.apply(scope, params);\n\t\t\t}\n\t\t};\n\n//----Animation getters/setters --------------------------------------------------------\n\n\t\tp.eventCallback = function(type, callback, params, scope) {\n\t\t\tif ((type || \"\").substr(0,2) === \"on\") {\n\t\t\t\tvar v = this.vars;\n\t\t\t\tif (arguments.length === 1) {\n\t\t\t\t\treturn v[type];\n\t\t\t\t}\n\t\t\t\tif (callback == null) {\n\t\t\t\t\tdelete v[type];\n\t\t\t\t} else {\n\t\t\t\t\tv[type] = callback;\n\t\t\t\t\tv[type + \"Params\"] = (_isArray(params) && params.join(\"\").indexOf(\"{self}\") !== -1) ? this._swapSelfInParams(params) : params;\n\t\t\t\t\tv[type + \"Scope\"] = scope;\n\t\t\t\t}\n\t\t\t\tif (type === \"onUpdate\") {\n\t\t\t\t\tthis._onUpdate = callback;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.delay = function(value) {\n\t\t\tif (!arguments.length) {\n\t\t\t\treturn this._delay;\n\t\t\t}\n\t\t\tif (this._timeline.smoothChildTiming) {\n\t\t\t\tthis.startTime( this._startTime + value - this._delay );\n\t\t\t}\n\t\t\tthis._delay = value;\n\t\t\treturn this;\n\t\t};\n\n\t\tp.duration = function(value) {\n\t\t\tif (!arguments.length) {\n\t\t\t\tthis._dirty = false;\n\t\t\t\treturn this._duration;\n\t\t\t}\n\t\t\tthis._duration = this._totalDuration = value;\n\t\t\tthis._uncache(true); //true in case it's a TweenMax or TimelineMax that has a repeat - we'll need to refresh the totalDuration.\n\t\t\tif (this._timeline.smoothChildTiming) if (this._time > 0) if (this._time < this._duration) if (value !== 0) {\n\t\t\t\tthis.totalTime(this._totalTime * (value / this._duration), true);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.totalDuration = function(value) {\n\t\t\tthis._dirty = false;\n\t\t\treturn (!arguments.length) ? this._totalDuration : this.duration(value);\n\t\t};\n\n\t\tp.time = function(value, suppressEvents) {\n\t\t\tif (!arguments.length) {\n\t\t\t\treturn this._time;\n\t\t\t}\n\t\t\tif (this._dirty) {\n\t\t\t\tthis.totalDuration();\n\t\t\t}\n\t\t\treturn this.totalTime((value > this._duration) ? this._duration : value, suppressEvents);\n\t\t};\n\n\t\tp.totalTime = function(time, suppressEvents, uncapped) {\n\t\t\tif (!_tickerActive) {\n\t\t\t\t_ticker.wake();\n\t\t\t}\n\t\t\tif (!arguments.length) {\n\t\t\t\treturn this._totalTime;\n\t\t\t}\n\t\t\tif (this._timeline) {\n\t\t\t\tif (time < 0 && !uncapped) {\n\t\t\t\t\ttime += this.totalDuration();\n\t\t\t\t}\n\t\t\t\tif (this._timeline.smoothChildTiming) {\n\t\t\t\t\tif (this._dirty) {\n\t\t\t\t\t\tthis.totalDuration();\n\t\t\t\t\t}\n\t\t\t\t\tvar totalDuration = this._totalDuration,\n\t\t\t\t\t\ttl = this._timeline;\n\t\t\t\t\tif (time > totalDuration && !uncapped) {\n\t\t\t\t\t\ttime = totalDuration;\n\t\t\t\t\t}\n\t\t\t\t\tthis._startTime = (this._paused ? this._pauseTime : tl._time) - ((!this._reversed ? time : totalDuration - time) / this._timeScale);\n\t\t\t\t\tif (!tl._dirty) { //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n\t\t\t\t\t\tthis._uncache(false);\n\t\t\t\t\t}\n\t\t\t\t\t//in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The startTime of that child would get pushed out, but one of the ancestors may have completed.\n\t\t\t\t\tif (tl._timeline) {\n\t\t\t\t\t\twhile (tl._timeline) {\n\t\t\t\t\t\t\tif (tl._timeline._time !== (tl._startTime + tl._totalTime) / tl._timeScale) {\n\t\t\t\t\t\t\t\ttl.totalTime(tl._totalTime, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttl = tl._timeline;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._gc) {\n\t\t\t\t\tthis._enabled(true, false);\n\t\t\t\t}\n\t\t\t\tif (this._totalTime !== time || this._duration === 0) {\n\t\t\t\t\tif (_lazyTweens.length) {\n\t\t\t\t\t\t_lazyRender();\n\t\t\t\t\t}\n\t\t\t\t\tthis.render(time, suppressEvents, false);\n\t\t\t\t\tif (_lazyTweens.length) { //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n\t\t\t\t\t\t_lazyRender();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.progress = p.totalProgress = function(value, suppressEvents) {\n\t\t\tvar duration = this.duration();\n\t\t\treturn (!arguments.length) ? (duration ? this._time / duration : this.ratio) : this.totalTime(duration * value, suppressEvents);\n\t\t};\n\n\t\tp.startTime = function(value) {\n\t\t\tif (!arguments.length) {\n\t\t\t\treturn this._startTime;\n\t\t\t}\n\t\t\tif (value !== this._startTime) {\n\t\t\t\tthis._startTime = value;\n\t\t\t\tif (this.timeline) if (this.timeline._sortChildren) {\n\t\t\t\t\tthis.timeline.add(this, value - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.endTime = function(includeRepeats) {\n\t\t\treturn this._startTime + ((includeRepeats != false) ? this.totalDuration() : this.duration()) / this._timeScale;\n\t\t};\n\n\t\tp.timeScale = function(value) {\n\t\t\tif (!arguments.length) {\n\t\t\t\treturn this._timeScale;\n\t\t\t}\n\t\t\tvar pauseTime, t;\n\t\t\tvalue = value || _tinyNum; //can't allow zero because it'll throw the math off\n\t\t\tif (this._timeline && this._timeline.smoothChildTiming) {\n\t\t\t\tpauseTime = this._pauseTime;\n\t\t\t\tt = (pauseTime || pauseTime === 0) ? pauseTime : this._timeline.totalTime();\n\t\t\t\tthis._startTime = t - ((t - this._startTime) * this._timeScale / value);\n\t\t\t}\n\t\t\tthis._timeScale = value;\n\t\t\tt = this.timeline;\n\t\t\twhile (t && t.timeline) { //must update the duration/totalDuration of all ancestor timelines immediately in case in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n\t\t\t\tt._dirty = true;\n\t\t\t\tt.totalDuration();\n\t\t\t\tt = t.timeline;\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.reversed = function(value) {\n\t\t\tif (!arguments.length) {\n\t\t\t\treturn this._reversed;\n\t\t\t}\n\t\t\tif (value != this._reversed) {\n\t\t\t\tthis._reversed = value;\n\t\t\t\tthis.totalTime(((this._timeline && !this._timeline.smoothChildTiming) ? this.totalDuration() - this._totalTime : this._totalTime), true);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.paused = function(value) {\n\t\t\tif (!arguments.length) {\n\t\t\t\treturn this._paused;\n\t\t\t}\n\t\t\tvar tl = this._timeline,\n\t\t\t\traw, elapsed;\n\t\t\tif (value != this._paused) if (tl) {\n\t\t\t\tif (!_tickerActive && !value) {\n\t\t\t\t\t_ticker.wake();\n\t\t\t\t}\n\t\t\t\traw = tl.rawTime();\n\t\t\t\telapsed = raw - this._pauseTime;\n\t\t\t\tif (!value && tl.smoothChildTiming) {\n\t\t\t\t\tthis._startTime += elapsed;\n\t\t\t\t\tthis._uncache(false);\n\t\t\t\t}\n\t\t\t\tthis._pauseTime = value ? raw : null;\n\t\t\t\tthis._paused = value;\n\t\t\t\tthis._active = this.isActive();\n\t\t\t\tif (!value && elapsed !== 0 && this._initted && this.duration()) {\n\t\t\t\t\traw = tl.smoothChildTiming ? this._totalTime : (raw - this._startTime) / this._timeScale;\n\t\t\t\t\tthis.render(raw, (raw === this._totalTime), true); //in case the target's properties changed via some other tween or manual update by the user, we should force a render.\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._gc && !value) {\n\t\t\t\tthis._enabled(true, false);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\n/*\n * ----------------------------------------------------------------\n * SimpleTimeline\n * ----------------------------------------------------------------\n */\n\t\tvar SimpleTimeline = _class(\"core.SimpleTimeline\", function(vars) {\n\t\t\tAnimation.call(this, 0, vars);\n\t\t\tthis.autoRemoveChildren = this.smoothChildTiming = true;\n\t\t});\n\n\t\tp = SimpleTimeline.prototype = new Animation();\n\t\tp.constructor = SimpleTimeline;\n\t\tp.kill()._gc = false;\n\t\tp._first = p._last = p._recent = null;\n\t\tp._sortChildren = false;\n\n\t\tp.add = p.insert = function(child, position, align, stagger) {\n\t\t\tvar prevTween, st;\n\t\t\tchild._startTime = Number(position || 0) + child._delay;\n\t\t\tif (child._paused) if (this !== child._timeline) { //we only adjust the _pauseTime if it wasn't in this timeline already. Remember, sometimes a tween will be inserted again into the same timeline when its startTime is changed so that the tweens in the TimelineLite/Max are re-ordered properly in the linked list (so everything renders in the proper order).\n\t\t\t\tchild._pauseTime = child._startTime + ((this.rawTime() - child._startTime) / child._timeScale);\n\t\t\t}\n\t\t\tif (child.timeline) {\n\t\t\t\tchild.timeline._remove(child, true); //removes from existing timeline so that it can be properly added to this one.\n\t\t\t}\n\t\t\tchild.timeline = child._timeline = this;\n\t\t\tif (child._gc) {\n\t\t\t\tchild._enabled(true, true);\n\t\t\t}\n\t\t\tprevTween = this._last;\n\t\t\tif (this._sortChildren) {\n\t\t\t\tst = child._startTime;\n\t\t\t\twhile (prevTween && prevTween._startTime > st) {\n\t\t\t\t\tprevTween = prevTween._prev;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (prevTween) {\n\t\t\t\tchild._next = prevTween._next;\n\t\t\t\tprevTween._next = child;\n\t\t\t} else {\n\t\t\t\tchild._next = this._first;\n\t\t\t\tthis._first = child;\n\t\t\t}\n\t\t\tif (child._next) {\n\t\t\t\tchild._next._prev = child;\n\t\t\t} else {\n\t\t\t\tthis._last = child;\n\t\t\t}\n\t\t\tchild._prev = prevTween;\n\t\t\tthis._recent = child;\n\t\t\tif (this._timeline) {\n\t\t\t\tthis._uncache(true);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp._remove = function(tween, skipDisable) {\n\t\t\tif (tween.timeline === this) {\n\t\t\t\tif (!skipDisable) {\n\t\t\t\t\ttween._enabled(false, true);\n\t\t\t\t}\n\n\t\t\t\tif (tween._prev) {\n\t\t\t\t\ttween._prev._next = tween._next;\n\t\t\t\t} else if (this._first === tween) {\n\t\t\t\t\tthis._first = tween._next;\n\t\t\t\t}\n\t\t\t\tif (tween._next) {\n\t\t\t\t\ttween._next._prev = tween._prev;\n\t\t\t\t} else if (this._last === tween) {\n\t\t\t\t\tthis._last = tween._prev;\n\t\t\t\t}\n\t\t\t\ttween._next = tween._prev = tween.timeline = null;\n\t\t\t\tif (tween === this._recent) {\n\t\t\t\t\tthis._recent = this._last;\n\t\t\t\t}\n\n\t\t\t\tif (this._timeline) {\n\t\t\t\t\tthis._uncache(true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp.render = function(time, suppressEvents, force) {\n\t\t\tvar tween = this._first,\n\t\t\t\tnext;\n\t\t\tthis._totalTime = this._time = this._rawPrevTime = time;\n\t\t\twhile (tween) {\n\t\t\t\tnext = tween._next; //record it here because the value could change after rendering...\n\t\t\t\tif (tween._active || (time >= tween._startTime && !tween._paused && !tween._gc)) {\n\t\t\t\t\tif (!tween._reversed) {\n\t\t\t\t\t\ttween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttween = next;\n\t\t\t}\n\t\t};\n\n\t\tp.rawTime = function() {\n\t\t\tif (!_tickerActive) {\n\t\t\t\t_ticker.wake();\n\t\t\t}\n\t\t\treturn this._totalTime;\n\t\t};\n\n/*\n * ----------------------------------------------------------------\n * TweenLite\n * ----------------------------------------------------------------\n */\n\t\tvar TweenLite = _class(\"TweenLite\", function(target, duration, vars) {\n\t\t\t\tAnimation.call(this, duration, vars);\n\t\t\t\tthis.render = TweenLite.prototype.render; //speed optimization (avoid prototype lookup on this \"hot\" method)\n\n\t\t\t\tif (target == null) {\n\t\t\t\t\tthrow \"Cannot tween a null target.\";\n\t\t\t\t}\n\n\t\t\t\tthis.target = target = (typeof(target) !== \"string\") ? target : TweenLite.selector(target) || target;\n\n\t\t\t\tvar isSelector = (target.jquery || (target.length && target !== window && target[0] && (target[0] === window || (target[0].nodeType && target[0].style && !target.nodeType)))),\n\t\t\t\t\toverwrite = this.vars.overwrite,\n\t\t\t\t\ti, targ, targets;\n\n\t\t\t\tthis._overwrite = overwrite = (overwrite == null) ? _overwriteLookup[TweenLite.defaultOverwrite] : (typeof(overwrite) === \"number\") ? overwrite >> 0 : _overwriteLookup[overwrite];\n\n\t\t\t\tif ((isSelector || target instanceof Array || (target.push && _isArray(target))) && typeof(target[0]) !== \"number\") {\n\t\t\t\t\tthis._targets = targets = _slice(target); //don't use Array.prototype.slice.call(target, 0) because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll()\n\t\t\t\t\tthis._propLookup = [];\n\t\t\t\t\tthis._siblings = [];\n\t\t\t\t\tfor (i = 0; i < targets.length; i++) {\n\t\t\t\t\t\ttarg = targets[i];\n\t\t\t\t\t\tif (!targ) {\n\t\t\t\t\t\t\ttargets.splice(i--, 1);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (typeof(targ) === \"string\") {\n\t\t\t\t\t\t\ttarg = targets[i--] = TweenLite.selector(targ); //in case it's an array of strings\n\t\t\t\t\t\t\tif (typeof(targ) === \"string\") {\n\t\t\t\t\t\t\t\ttargets.splice(i+1, 1); //to avoid an endless loop (can't imagine why the selector would return a string, but just in case)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (targ.length && targ !== window && targ[0] && (targ[0] === window || (targ[0].nodeType && targ[0].style && !targ.nodeType))) { //in case the user is passing in an array of selector objects (like jQuery objects), we need to check one more level and pull things out if necessary. Also note that elements pass all the criteria regarding length and the first child having style, so we must also check to ensure the target isn't an HTML node itself.\n\t\t\t\t\t\t\ttargets.splice(i--, 1);\n\t\t\t\t\t\t\tthis._targets = targets = targets.concat(_slice(targ));\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._siblings[i] = _register(targ, this, false);\n\t\t\t\t\t\tif (overwrite === 1) if (this._siblings[i].length > 1) {\n\t\t\t\t\t\t\t_applyOverwrite(targ, this, null, 1, this._siblings[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tthis._propLookup = {};\n\t\t\t\t\tthis._siblings = _register(target, this, false);\n\t\t\t\t\tif (overwrite === 1) if (this._siblings.length > 1) {\n\t\t\t\t\t\t_applyOverwrite(target, this, null, 1, this._siblings);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.vars.immediateRender || (duration === 0 && this._delay === 0 && this.vars.immediateRender !== false)) {\n\t\t\t\t\tthis._time = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\t\t\t\t\tthis.render(Math.min(0, -this._delay)); //in case delay is negative\n\t\t\t\t}\n\t\t\t}, true),\n\t\t\t_isSelector = function(v) {\n\t\t\t\treturn (v && v.length && v !== window && v[0] && (v[0] === window || (v[0].nodeType && v[0].style && !v.nodeType))); //we cannot check \"nodeType\" if the target is window from within an iframe, otherwise it will trigger a security error in some browsers like Firefox.\n\t\t\t},\n\t\t\t_autoCSS = function(vars, target) {\n\t\t\t\tvar css = {},\n\t\t\t\t\tp;\n\t\t\t\tfor (p in vars) {\n\t\t\t\t\tif (!_reservedProps[p] && (!(p in target) || p === \"transform\" || p === \"x\" || p === \"y\" || p === \"width\" || p === \"height\" || p === \"className\" || p === \"border\") && (!_plugins[p] || (_plugins[p] && _plugins[p]._autoCSS))) { //note: elements contain read-only \"x\" and \"y\" properties. We should also prioritize editing css width/height rather than the element's properties.\n\t\t\t\t\t\tcss[p] = vars[p];\n\t\t\t\t\t\tdelete vars[p];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvars.css = css;\n\t\t\t};\n\n\t\tp = TweenLite.prototype = new Animation();\n\t\tp.constructor = TweenLite;\n\t\tp.kill()._gc = false;\n\n//----TweenLite defaults, overwrite management, and root updates ----------------------------------------------------\n\n\t\tp.ratio = 0;\n\t\tp._firstPT = p._targets = p._overwrittenProps = p._startAt = null;\n\t\tp._notifyPluginsOfEnabled = p._lazy = false;\n\n\t\tTweenLite.version = \"1.20.4\";\n\t\tTweenLite.defaultEase = p._ease = new Ease(null, null, 1, 1);\n\t\tTweenLite.defaultOverwrite = \"auto\";\n\t\tTweenLite.ticker = _ticker;\n\t\tTweenLite.autoSleep = 120;\n\t\tTweenLite.lagSmoothing = function(threshold, adjustedLag) {\n\t\t\t_ticker.lagSmoothing(threshold, adjustedLag);\n\t\t};\n\n\t\tTweenLite.selector = window.$ || window.jQuery || function(e) {\n\t\t\tvar selector = window.$ || window.jQuery;\n\t\t\tif (selector) {\n\t\t\t\tTweenLite.selector = selector;\n\t\t\t\treturn selector(e);\n\t\t\t}\n\t\t\treturn (typeof(_doc) === \"undefined\") ? e : (_doc.querySelectorAll ? _doc.querySelectorAll(e) : _doc.getElementById((e.charAt(0) === \"#\") ? e.substr(1) : e));\n\t\t};\n\n\t\tvar _lazyTweens = [],\n\t\t\t_lazyLookup = {},\n\t\t\t_numbersExp = /(?:(-|-=|\\+=)?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/ig,\n\t\t\t_relExp = /[\\+-]=-?[\\.\\d]/,\n\t\t\t//_nonNumbersExp = /(?:([\\-+](?!(\\d|=)))|[^\\d\\-+=e]|(e(?![\\-+][\\d])))+/ig,\n\t\t\t_setRatio = function(v) {\n\t\t\t\tvar pt = this._firstPT,\n\t\t\t\t\tmin = 0.000001,\n\t\t\t\t\tval;\n\t\t\t\twhile (pt) {\n\t\t\t\t\tval = !pt.blob ? pt.c * v + pt.s : (v === 1 && this.end != null) ? this.end : v ? this.join(\"\") : this.start;\n\t\t\t\t\tif (pt.m) {\n\t\t\t\t\t\tval = pt.m(val, this._target || pt.t);\n\t\t\t\t\t} else if (val < min) if (val > -min && !pt.blob) { //prevents issues with converting very small numbers to strings in the browser\n\t\t\t\t\t\tval = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (!pt.f) {\n\t\t\t\t\t\tpt.t[pt.p] = val;\n\t\t\t\t\t} else if (pt.fp) {\n\t\t\t\t\t\tpt.t[pt.p](pt.fp, val);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpt.t[pt.p](val);\n\t\t\t\t\t}\n\t\t\t\t\tpt = pt._next;\n\t\t\t\t}\n\t\t\t},\n\t\t\t//compares two strings (start/end), finds the numbers that are different and spits back an array representing the whole value but with the changing values isolated as elements. For example, \"rgb(0,0,0)\" and \"rgb(100,50,0)\" would become [\"rgb(\", 0, \",\", 50, \",0)\"]. Notice it merges the parts that are identical (performance optimization). The array also has a linked list of PropTweens attached starting with _firstPT that contain the tweening data (t, p, s, c, f, etc.). It also stores the starting value as a \"start\" property so that we can revert to it if/when necessary, like when a tween rewinds fully. If the quantity of numbers differs between the start and end, it will always prioritize the end value(s). The pt parameter is optional - it's for a PropTween that will be appended to the end of the linked list and is typically for actually setting the value after all of the elements have been updated (with array.join(\"\")).\n\t\t\t_blobDif = function(start, end, filter, pt) {\n\t\t\t\tvar a = [],\n\t\t\t\t\tcharIndex = 0,\n\t\t\t\t\ts = \"\",\n\t\t\t\t\tcolor = 0,\n\t\t\t\t\tstartNums, endNums, num, i, l, nonNumbers, currentNum;\n\t\t\t\ta.start = start;\n\t\t\t\ta.end = end;\n\t\t\t\tstart = a[0] = start + \"\"; //ensure values are strings\n\t\t\t\tend = a[1] = end + \"\";\n\t\t\t\tif (filter) {\n\t\t\t\t\tfilter(a); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\t\t\t\t\tstart = a[0];\n\t\t\t\t\tend = a[1];\n\t\t\t\t}\n\t\t\t\ta.length = 0;\n\t\t\t\tstartNums = start.match(_numbersExp) || [];\n\t\t\t\tendNums = end.match(_numbersExp) || [];\n\t\t\t\tif (pt) {\n\t\t\t\t\tpt._next = null;\n\t\t\t\t\tpt.blob = 1;\n\t\t\t\t\ta._firstPT = a._applyPT = pt; //apply last in the linked list (which means inserting it first)\n\t\t\t\t}\n\t\t\t\tl = endNums.length;\n\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\tcurrentNum = endNums[i];\n\t\t\t\t\tnonNumbers = end.substr(charIndex, end.indexOf(currentNum, charIndex)-charIndex);\n\t\t\t\t\ts += (nonNumbers || !i) ? nonNumbers : \",\"; //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n\t\t\t\t\tcharIndex += nonNumbers.length;\n\t\t\t\t\tif (color) { //sense rgba() values and round them.\n\t\t\t\t\t\tcolor = (color + 1) % 5;\n\t\t\t\t\t} else if (nonNumbers.substr(-5) === \"rgba(\") {\n\t\t\t\t\t\tcolor = 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (currentNum === startNums[i] || startNums.length <= i) {\n\t\t\t\t\t\ts += currentNum;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\ta.push(s);\n\t\t\t\t\t\t\ts = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnum = parseFloat(startNums[i]);\n\t\t\t\t\t\ta.push(num);\n\t\t\t\t\t\ta._firstPT = {_next: a._firstPT, t:a, p: a.length-1, s:num, c:((currentNum.charAt(1) === \"=\") ? parseInt(currentNum.charAt(0) + \"1\", 10) * parseFloat(currentNum.substr(2)) : (parseFloat(currentNum) - num)) || 0, f:0, m:(color && color < 4) ? Math.round : 0};\n\t\t\t\t\t\t//note: we don't set _prev because we'll never need to remove individual PropTweens from this list.\n\t\t\t\t\t}\n\t\t\t\t\tcharIndex += currentNum.length;\n\t\t\t\t}\n\t\t\t\ts += end.substr(charIndex);\n\t\t\t\tif (s) {\n\t\t\t\t\ta.push(s);\n\t\t\t\t}\n\t\t\t\ta.setRatio = _setRatio;\n\t\t\t\tif (_relExp.test(end)) { //if the end string contains relative values, delete it so that on the final render (in _setRatio()), we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\t\t\t\t\ta.end = null;\n\t\t\t\t}\n\t\t\t\treturn a;\n\t\t\t},\n\t\t\t//note: \"funcParam\" is only necessary for function-based getters/setters that require an extra parameter like getAttribute(\"width\") and setAttribute(\"width\", value). In this example, funcParam would be \"width\". Used by AttrPlugin for example.\n\t\t\t_addPropTween = function(target, prop, start, end, overwriteProp, mod, funcParam, stringFilter, index) {\n\t\t\t\tif (typeof(end) === \"function\") {\n\t\t\t\t\tend = end(index || 0, target);\n\t\t\t\t}\n\t\t\t\tvar type = typeof(target[prop]),\n\t\t\t\t\tgetterName = (type !== \"function\") ? \"\" : ((prop.indexOf(\"set\") || typeof(target[\"get\" + prop.substr(3)]) !== \"function\") ? prop : \"get\" + prop.substr(3)),\n\t\t\t\t\ts = (start !== \"get\") ? start : !getterName ? target[prop] : funcParam ? target[getterName](funcParam) : target[getterName](),\n\t\t\t\t\tisRelative = (typeof(end) === \"string\" && end.charAt(1) === \"=\"),\n\t\t\t\t\tpt = {t:target, p:prop, s:s, f:(type === \"function\"), pg:0, n:overwriteProp || prop, m:(!mod ? 0 : (typeof(mod) === \"function\") ? mod : Math.round), pr:0, c:isRelative ? parseInt(end.charAt(0) + \"1\", 10) * parseFloat(end.substr(2)) : (parseFloat(end) - s) || 0},\n\t\t\t\t\tblob;\n\n\t\t\t\tif (typeof(s) !== \"number\" || (typeof(end) !== \"number\" && !isRelative)) {\n\t\t\t\t\tif (funcParam || isNaN(s) || (!isRelative && isNaN(end)) || typeof(s) === \"boolean\" || typeof(end) === \"boolean\") {\n\t\t\t\t\t\t//a blob (string that has multiple numbers in it)\n\t\t\t\t\t\tpt.fp = funcParam;\n\t\t\t\t\t\tblob = _blobDif(s, (isRelative ? (parseFloat(pt.s) + pt.c) + (pt.s + \"\").replace(/[0-9\\-\\.]/g, \"\") : end), stringFilter || TweenLite.defaultStringFilter, pt);\n\t\t\t\t\t\tpt = {t: blob, p: \"setRatio\", s: 0, c: 1, f: 2, pg: 0, n: overwriteProp || prop, pr: 0, m: 0}; //\"2\" indicates it's a Blob property tween. Needed for RoundPropsPlugin for example.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpt.s = parseFloat(s);\n\t\t\t\t\t\tif (!isRelative) {\n\t\t\t\t\t\t\tpt.c = (parseFloat(end) - pt.s) || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pt.c) { //only add it to the linked list if there's a change.\n\t\t\t\t\tif ((pt._next = this._firstPT)) {\n\t\t\t\t\t\tpt._next._prev = pt;\n\t\t\t\t\t}\n\t\t\t\t\tthis._firstPT = pt;\n\t\t\t\t\treturn pt;\n\t\t\t\t}\n\t\t\t},\n\t\t\t_internals = TweenLite._internals = {isArray:_isArray, isSelector:_isSelector, lazyTweens:_lazyTweens, blobDif:_blobDif}, //gives us a way to expose certain private values to other GreenSock classes without contaminating tha main TweenLite object.\n\t\t\t_plugins = TweenLite._plugins = {},\n\t\t\t_tweenLookup = _internals.tweenLookup = {},\n\t\t\t_tweenLookupNum = 0,\n\t\t\t_reservedProps = _internals.reservedProps = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, onCompleteScope:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, onUpdateScope:1, onStart:1, onStartParams:1, onStartScope:1, onReverseComplete:1, onReverseCompleteParams:1, onReverseCompleteScope:1, onRepeat:1, onRepeatParams:1, onRepeatScope:1, easeParams:1, yoyo:1, immediateRender:1, repeat:1, repeatDelay:1, data:1, paused:1, reversed:1, autoCSS:1, lazy:1, onOverwrite:1, callbackScope:1, stringFilter:1, id:1, yoyoEase:1},\n\t\t\t_overwriteLookup = {none:0, all:1, auto:2, concurrent:3, allOnStart:4, preexisting:5, \"true\":1, \"false\":0},\n\t\t\t_rootFramesTimeline = Animation._rootFramesTimeline = new SimpleTimeline(),\n\t\t\t_rootTimeline = Animation._rootTimeline = new SimpleTimeline(),\n\t\t\t_nextGCFrame = 30,\n\t\t\t_lazyRender = _internals.lazyRender = function() {\n\t\t\t\tvar i = _lazyTweens.length,\n\t\t\t\t\ttween;\n\t\t\t\t_lazyLookup = {};\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\ttween = _lazyTweens[i];\n\t\t\t\t\tif (tween && tween._lazy !== false) {\n\t\t\t\t\t\ttween.render(tween._lazy[0], tween._lazy[1], true);\n\t\t\t\t\t\ttween._lazy = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_lazyTweens.length = 0;\n\t\t\t};\n\n\t\t_rootTimeline._startTime = _ticker.time;\n\t\t_rootFramesTimeline._startTime = _ticker.frame;\n\t\t_rootTimeline._active = _rootFramesTimeline._active = true;\n\t\tsetTimeout(_lazyRender, 1); //on some mobile devices, there isn't a \"tick\" before code runs which means any lazy renders wouldn't run before the next official \"tick\".\n\n\t\tAnimation._updateRoot = TweenLite.render = function() {\n\t\t\t\tvar i, a, p;\n\t\t\t\tif (_lazyTweens.length) { //if code is run outside of the requestAnimationFrame loop, there may be tweens queued AFTER the engine refreshed, so we need to ensure any pending renders occur before we refresh again.\n\t\t\t\t\t_lazyRender();\n\t\t\t\t}\n\t\t\t\t_rootTimeline.render((_ticker.time - _rootTimeline._startTime) * _rootTimeline._timeScale, false, false);\n\t\t\t\t_rootFramesTimeline.render((_ticker.frame - _rootFramesTimeline._startTime) * _rootFramesTimeline._timeScale, false, false);\n\t\t\t\tif (_lazyTweens.length) {\n\t\t\t\t\t_lazyRender();\n\t\t\t\t}\n\t\t\t\tif (_ticker.frame >= _nextGCFrame) { //dump garbage every 120 frames or whatever the user sets TweenLite.autoSleep to\n\t\t\t\t\t_nextGCFrame = _ticker.frame + (parseInt(TweenLite.autoSleep, 10) || 120);\n\t\t\t\t\tfor (p in _tweenLookup) {\n\t\t\t\t\t\ta = _tweenLookup[p].tweens;\n\t\t\t\t\t\ti = a.length;\n\t\t\t\t\t\twhile (--i > -1) {\n\t\t\t\t\t\t\tif (a[i]._gc) {\n\t\t\t\t\t\t\t\ta.splice(i, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (a.length === 0) {\n\t\t\t\t\t\t\tdelete _tweenLookup[p];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//if there are no more tweens in the root timelines, or if they're all paused, make the _timer sleep to reduce load on the CPU slightly\n\t\t\t\t\tp = _rootTimeline._first;\n\t\t\t\t\tif (!p || p._paused) if (TweenLite.autoSleep && !_rootFramesTimeline._first && _ticker._listeners.tick.length === 1) {\n\t\t\t\t\t\twhile (p && p._paused) {\n\t\t\t\t\t\t\tp = p._next;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!p) {\n\t\t\t\t\t\t\t_ticker.sleep();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t_ticker.addEventListener(\"tick\", Animation._updateRoot);\n\n\t\tvar _register = function(target, tween, scrub) {\n\t\t\t\tvar id = target._gsTweenID, a, i;\n\t\t\t\tif (!_tweenLookup[id || (target._gsTweenID = id = \"t\" + (_tweenLookupNum++))]) {\n\t\t\t\t\t_tweenLookup[id] = {target:target, tweens:[]};\n\t\t\t\t}\n\t\t\t\tif (tween) {\n\t\t\t\t\ta = _tweenLookup[id].tweens;\n\t\t\t\t\ta[(i = a.length)] = tween;\n\t\t\t\t\tif (scrub) {\n\t\t\t\t\t\twhile (--i > -1) {\n\t\t\t\t\t\t\tif (a[i] === tween) {\n\t\t\t\t\t\t\t\ta.splice(i, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn _tweenLookup[id].tweens;\n\t\t\t},\n\t\t\t_onOverwrite = function(overwrittenTween, overwritingTween, target, killedProps) {\n\t\t\t\tvar func = overwrittenTween.vars.onOverwrite, r1, r2;\n\t\t\t\tif (func) {\n\t\t\t\t\tr1 = func(overwrittenTween, overwritingTween, target, killedProps);\n\t\t\t\t}\n\t\t\t\tfunc = TweenLite.onOverwrite;\n\t\t\t\tif (func) {\n\t\t\t\t\tr2 = func(overwrittenTween, overwritingTween, target, killedProps);\n\t\t\t\t}\n\t\t\t\treturn (r1 !== false && r2 !== false);\n\t\t\t},\n\t\t\t_applyOverwrite = function(target, tween, props, mode, siblings) {\n\t\t\t\tvar i, changed, curTween, l;\n\t\t\t\tif (mode === 1 || mode >= 4) {\n\t\t\t\t\tl = siblings.length;\n\t\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\t\tif ((curTween = siblings[i]) !== tween) {\n\t\t\t\t\t\t\tif (!curTween._gc) {\n\t\t\t\t\t\t\t\tif (curTween._kill(null, target, tween)) {\n\t\t\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (mode === 5) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn changed;\n\t\t\t\t}\n\t\t\t\t//NOTE: Add 0.0000000001 to overcome floating point errors that can cause the startTime to be VERY slightly off (when a tween's time() is set for example)\n\t\t\t\tvar startTime = tween._startTime + _tinyNum,\n\t\t\t\t\toverlaps = [],\n\t\t\t\t\toCount = 0,\n\t\t\t\t\tzeroDur = (tween._duration === 0),\n\t\t\t\t\tglobalStart;\n\t\t\t\ti = siblings.length;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tif ((curTween = siblings[i]) === tween || curTween._gc || curTween._paused) {\n\t\t\t\t\t\t//ignore\n\t\t\t\t\t} else if (curTween._timeline !== tween._timeline) {\n\t\t\t\t\t\tglobalStart = globalStart || _checkOverlap(tween, 0, zeroDur);\n\t\t\t\t\t\tif (_checkOverlap(curTween, globalStart, zeroDur) === 0) {\n\t\t\t\t\t\t\toverlaps[oCount++] = curTween;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (curTween._startTime <= startTime) if (curTween._startTime + curTween.totalDuration() / curTween._timeScale > startTime) if (!((zeroDur || !curTween._initted) && startTime - curTween._startTime <= 0.0000000002)) {\n\t\t\t\t\t\toverlaps[oCount++] = curTween;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ti = oCount;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tcurTween = overlaps[i];\n\t\t\t\t\tif (mode === 2) if (curTween._kill(props, target, tween)) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (mode !== 2 || (!curTween._firstPT && curTween._initted)) {\n\t\t\t\t\t\tif (mode !== 2 && !_onOverwrite(curTween, tween)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (curTween._enabled(false, false)) { //if all property tweens have been overwritten, kill the tween.\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn changed;\n\t\t\t},\n\t\t\t_checkOverlap = function(tween, reference, zeroDur) {\n\t\t\t\tvar tl = tween._timeline,\n\t\t\t\t\tts = tl._timeScale,\n\t\t\t\t\tt = tween._startTime;\n\t\t\t\twhile (tl._timeline) {\n\t\t\t\t\tt += tl._startTime;\n\t\t\t\t\tts *= tl._timeScale;\n\t\t\t\t\tif (tl._paused) {\n\t\t\t\t\t\treturn -100;\n\t\t\t\t\t}\n\t\t\t\t\ttl = tl._timeline;\n\t\t\t\t}\n\t\t\t\tt /= ts;\n\t\t\t\treturn (t > reference) ? t - reference : ((zeroDur && t === reference) || (!tween._initted && t - reference < 2 * _tinyNum)) ? _tinyNum : ((t += tween.totalDuration() / tween._timeScale / ts) > reference + _tinyNum) ? 0 : t - reference - _tinyNum;\n\t\t\t};\n\n\n//---- TweenLite instance methods -----------------------------------------------------------------------------\n\n\t\tp._init = function() {\n\t\t\tvar v = this.vars,\n\t\t\t\top = this._overwrittenProps,\n\t\t\t\tdur = this._duration,\n\t\t\t\timmediate = !!v.immediateRender,\n\t\t\t\tease = v.ease,\n\t\t\t\ti, initPlugins, pt, p, startVars, l;\n\t\t\tif (v.startAt) {\n\t\t\t\tif (this._startAt) {\n\t\t\t\t\tthis._startAt.render(-1, true); //if we've run a startAt previously (when the tween instantiated), we should revert it so that the values re-instantiate correctly particularly for relative tweens. Without this, a TweenLite.fromTo(obj, 1, {x:\"+=100\"}, {x:\"-=100\"}), for example, would actually jump to +=200 because the startAt would run twice, doubling the relative change.\n\t\t\t\t\tthis._startAt.kill();\n\t\t\t\t}\n\t\t\t\tstartVars = {};\n\t\t\t\tfor (p in v.startAt) { //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, 1, from, to).fromTo(e, 1, to, from);\n\t\t\t\t\tstartVars[p] = v.startAt[p];\n\t\t\t\t}\n\t\t\t\tstartVars.data = \"isStart\";\n\t\t\t\tstartVars.overwrite = false;\n\t\t\t\tstartVars.immediateRender = true;\n\t\t\t\tstartVars.lazy = (immediate && v.lazy !== false);\n\t\t\t\tstartVars.startAt = startVars.delay = null; //no nesting of startAt objects allowed (otherwise it could cause an infinite loop).\n\t\t\t\tstartVars.onUpdate = v.onUpdate;\n\t\t\t\tstartVars.onUpdateParams = v.onUpdateParams;\n\t\t\t\tstartVars.onUpdateScope = v.onUpdateScope || v.callbackScope || this;\n\t\t\t\tthis._startAt = TweenLite.to(this.target, 0, startVars);\n\t\t\t\tif (immediate) {\n\t\t\t\t\tif (this._time > 0) {\n\t\t\t\t\t\tthis._startAt = null; //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in TimelineLite/Max instances where immediateRender was false (which is the default in the convenience methods like from()).\n\t\t\t\t\t} else if (dur !== 0) {\n\t\t\t\t\t\treturn; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a TimelineLite or TimelineMax, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (v.runBackwards && dur !== 0) {\n\t\t\t\t//from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n\t\t\t\tif (this._startAt) {\n\t\t\t\t\tthis._startAt.render(-1, true);\n\t\t\t\t\tthis._startAt.kill();\n\t\t\t\t\tthis._startAt = null;\n\t\t\t\t} else {\n\t\t\t\t\tif (this._time !== 0) { //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\t\t\t\t\t\timmediate = false;\n\t\t\t\t\t}\n\t\t\t\t\tpt = {};\n\t\t\t\t\tfor (p in v) { //copy props into a new object and skip any reserved props, otherwise onComplete or onUpdate or onStart could fire. We should, however, permit autoCSS to go through.\n\t\t\t\t\t\tif (!_reservedProps[p] || p === \"autoCSS\") {\n\t\t\t\t\t\t\tpt[p] = v[p];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpt.overwrite = 0;\n\t\t\t\t\tpt.data = \"isFromStart\"; //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n\t\t\t\t\tpt.lazy = (immediate && v.lazy !== false);\n\t\t\t\t\tpt.immediateRender = immediate; //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n\t\t\t\t\tthis._startAt = TweenLite.to(this.target, 0, pt);\n\t\t\t\t\tif (!immediate) {\n\t\t\t\t\t\tthis._startAt._init(); //ensures that the initial values are recorded\n\t\t\t\t\t\tthis._startAt._enabled(false); //no need to have the tween render on the next cycle. Disable it because we'll always manually control the renders of the _startAt tween.\n\t\t\t\t\t\tif (this.vars.immediateRender) {\n\t\t\t\t\t\t\tthis._startAt = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (this._time === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._ease = ease = (!ease) ? TweenLite.defaultEase : (ease instanceof Ease) ? ease : (typeof(ease) === \"function\") ? new Ease(ease, v.easeParams) : _easeMap[ease] || TweenLite.defaultEase;\n\t\t\tif (v.easeParams instanceof Array && ease.config) {\n\t\t\t\tthis._ease = ease.config.apply(ease, v.easeParams);\n\t\t\t}\n\t\t\tthis._easeType = this._ease._type;\n\t\t\tthis._easePower = this._ease._power;\n\t\t\tthis._firstPT = null;\n\n\t\t\tif (this._targets) {\n\t\t\t\tl = this._targets.length;\n\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\tif ( this._initProps( this._targets[i], (this._propLookup[i] = {}), this._siblings[i], (op ? op[i] : null), i) ) {\n\t\t\t\t\t\tinitPlugins = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinitPlugins = this._initProps(this.target, this._propLookup, this._siblings, op, 0);\n\t\t\t}\n\n\t\t\tif (initPlugins) {\n\t\t\t\tTweenLite._onPluginEvent(\"_onInitAllProps\", this); //reorders the array in order of priority. Uses a static TweenPlugin method in order to minimize file size in TweenLite\n\t\t\t}\n\t\t\tif (op) if (!this._firstPT) if (typeof(this.target) !== \"function\") { //if all tweening properties have been overwritten, kill the tween. If the target is a function, it's probably a delayedCall so let it live.\n\t\t\t\tthis._enabled(false, false);\n\t\t\t}\n\t\t\tif (v.runBackwards) {\n\t\t\t\tpt = this._firstPT;\n\t\t\t\twhile (pt) {\n\t\t\t\t\tpt.s += pt.c;\n\t\t\t\t\tpt.c = -pt.c;\n\t\t\t\t\tpt = pt._next;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._onUpdate = v.onUpdate;\n\t\t\tthis._initted = true;\n\t\t};\n\n\t\tp._initProps = function(target, propLookup, siblings, overwrittenProps, index) {\n\t\t\tvar p, i, initPlugins, plugin, pt, v;\n\t\t\tif (target == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (_lazyLookup[target._gsTweenID]) {\n\t\t\t\t_lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\t\t\t}\n\n\t\t\tif (!this.vars.css) if (target.style) if (target !== window && target.nodeType) if (_plugins.css) if (this.vars.autoCSS !== false) { //it's so common to use TweenLite/Max to animate the css of DOM elements, we assume that if the target is a DOM element, that's what is intended (a convenience so that users don't have to wrap things in css:{}, although we still recommend it for a slight performance boost and better specificity). Note: we cannot check \"nodeType\" on the window inside an iframe.\n\t\t\t\t_autoCSS(this.vars, target);\n\t\t\t}\n\t\t\tfor (p in this.vars) {\n\t\t\t\tv = this.vars[p];\n\t\t\t\tif (_reservedProps[p]) {\n\t\t\t\t\tif (v) if ((v instanceof Array) || (v.push && _isArray(v))) if (v.join(\"\").indexOf(\"{self}\") !== -1) {\n\t\t\t\t\t\tthis.vars[p] = v = this._swapSelfInParams(v, this);\n\t\t\t\t\t}\n\n\t\t\t\t} else if (_plugins[p] && (plugin = new _plugins[p]())._onInitTween(target, this.vars[p], this, index)) {\n\n\t\t\t\t\t//t - target \t\t[object]\n\t\t\t\t\t//p - property \t\t[string]\n\t\t\t\t\t//s - start\t\t\t[number]\n\t\t\t\t\t//c - change\t\t[number]\n\t\t\t\t\t//f - isFunction\t[boolean]\n\t\t\t\t\t//n - name\t\t\t[string]\n\t\t\t\t\t//pg - isPlugin \t[boolean]\n\t\t\t\t\t//pr - priority\t\t[number]\n\t\t\t\t\t//m - mod [function | 0]\n\t\t\t\t\tthis._firstPT = pt = {_next:this._firstPT, t:plugin, p:\"setRatio\", s:0, c:1, f:1, n:p, pg:1, pr:plugin._priority, m:0};\n\t\t\t\t\ti = plugin._overwriteProps.length;\n\t\t\t\t\twhile (--i > -1) {\n\t\t\t\t\t\tpropLookup[plugin._overwriteProps[i]] = this._firstPT;\n\t\t\t\t\t}\n\t\t\t\t\tif (plugin._priority || plugin._onInitAllProps) {\n\t\t\t\t\t\tinitPlugins = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (plugin._onDisable || plugin._onEnable) {\n\t\t\t\t\t\tthis._notifyPluginsOfEnabled = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (pt._next) {\n\t\t\t\t\t\tpt._next._prev = pt;\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tpropLookup[p] = _addPropTween.call(this, target, p, \"get\", v, p, 0, null, this.vars.stringFilter, index);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (overwrittenProps) if (this._kill(overwrittenProps, target)) { //another tween may have tried to overwrite properties of this tween before init() was called (like if two tweens start at the same time, the one created second will run first)\n\t\t\t\treturn this._initProps(target, propLookup, siblings, overwrittenProps, index);\n\t\t\t}\n\t\t\tif (this._overwrite > 1) if (this._firstPT) if (siblings.length > 1) if (_applyOverwrite(target, this, propLookup, this._overwrite, siblings)) {\n\t\t\t\tthis._kill(propLookup, target);\n\t\t\t\treturn this._initProps(target, propLookup, siblings, overwrittenProps, index);\n\t\t\t}\n\t\t\tif (this._firstPT) if ((this.vars.lazy !== false && this._duration) || (this.vars.lazy && !this._duration)) { //zero duration tweens don't lazy render by default; everything else does.\n\t\t\t\t_lazyLookup[target._gsTweenID] = true;\n\t\t\t}\n\t\t\treturn initPlugins;\n\t\t};\n\n\t\tp.render = function(time, suppressEvents, force) {\n\t\t\tvar prevTime = this._time,\n\t\t\t\tduration = this._duration,\n\t\t\t\tprevRawPrevTime = this._rawPrevTime,\n\t\t\t\tisComplete, callback, pt, rawPrevTime;\n\t\t\tif (time >= duration - 0.0000001 && time >= 0) { //to work around occasional floating point math artifacts.\n\t\t\t\tthis._totalTime = this._time = duration;\n\t\t\t\tthis.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1;\n\t\t\t\tif (!this._reversed ) {\n\t\t\t\t\tisComplete = true;\n\t\t\t\t\tcallback = \"onComplete\";\n\t\t\t\t\tforce = (force || this._timeline.autoRemoveChildren); //otherwise, if the animation is unpaused/activated after it's already finished, it doesn't get removed from the parent timeline.\n\t\t\t\t}\n\t\t\t\tif (duration === 0) if (this._initted || !this.vars.lazy || force) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the \"playhead\" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's \"playhead\" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.\n\t\t\t\t\tif (this._startTime === this._timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate.\n\t\t\t\t\t\ttime = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (prevRawPrevTime < 0 || (time <= 0 && time >= -0.0000001) || (prevRawPrevTime === _tinyNum && this.data !== \"isPause\")) if (prevRawPrevTime !== time) { //note: when this.data is \"isPause\", it's a callback added by addPause() on a timeline that we should not be triggered when LEAVING its exact start time. In other words, tl.addPause(1).play(1) shouldn't pause.\n\t\t\t\t\t\tforce = true;\n\t\t\t\t\t\tif (prevRawPrevTime > _tinyNum) {\n\t\t\t\t\t\t\tcallback = \"onReverseComplete\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._rawPrevTime = rawPrevTime = (!suppressEvents || time || prevRawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n\t\t\t\t}\n\n\t\t\t} else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.\n\t\t\t\tthis._totalTime = this._time = 0;\n\t\t\t\tthis.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;\n\t\t\t\tif (prevTime !== 0 || (duration === 0 && prevRawPrevTime > 0)) {\n\t\t\t\t\tcallback = \"onReverseComplete\";\n\t\t\t\t\tisComplete = this._reversed;\n\t\t\t\t}\n\t\t\t\tif (time < 0) {\n\t\t\t\t\tthis._active = false;\n\t\t\t\t\tif (duration === 0) if (this._initted || !this.vars.lazy || force) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the \"playhead\" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's \"playhead\" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.\n\t\t\t\t\t\tif (prevRawPrevTime >= 0 && !(prevRawPrevTime === _tinyNum && this.data === \"isPause\")) {\n\t\t\t\t\t\t\tforce = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._rawPrevTime = rawPrevTime = (!suppressEvents || time || prevRawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this._initted || (this._startAt && this._startAt.progress())) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately. Also, we check progress() because if startAt has already rendered at its end, we should force a render at its beginning. Otherwise, if you put the playhead directly on top of where a fromTo({immediateRender:false}) starts, and then move it backwards, the from() won't revert its values.\n\t\t\t\t\tforce = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._totalTime = this._time = time;\n\n\t\t\t\tif (this._easeType) {\n\t\t\t\t\tvar r = time / duration, type = this._easeType, pow = this._easePower;\n\t\t\t\t\tif (type === 1 || (type === 3 && r >= 0.5)) {\n\t\t\t\t\t\tr = 1 - r;\n\t\t\t\t\t}\n\t\t\t\t\tif (type === 3) {\n\t\t\t\t\t\tr *= 2;\n\t\t\t\t\t}\n\t\t\t\t\tif (pow === 1) {\n\t\t\t\t\t\tr *= r;\n\t\t\t\t\t} else if (pow === 2) {\n\t\t\t\t\t\tr *= r * r;\n\t\t\t\t\t} else if (pow === 3) {\n\t\t\t\t\t\tr *= r * r * r;\n\t\t\t\t\t} else if (pow === 4) {\n\t\t\t\t\t\tr *= r * r * r * r;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (type === 1) {\n\t\t\t\t\t\tthis.ratio = 1 - r;\n\t\t\t\t\t} else if (type === 2) {\n\t\t\t\t\t\tthis.ratio = r;\n\t\t\t\t\t} else if (time / duration < 0.5) {\n\t\t\t\t\t\tthis.ratio = r / 2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.ratio = 1 - (r / 2);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tthis.ratio = this._ease.getRatio(time / duration);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._time === prevTime && !force) {\n\t\t\t\treturn;\n\t\t\t} else if (!this._initted) {\n\t\t\t\tthis._init();\n\t\t\t\tif (!this._initted || this._gc) { //immediateRender tweens typically won't initialize until the playhead advances (_time is greater than 0) in order to ensure that overwriting occurs properly. Also, if all of the tweening properties have been overwritten (which would cause _gc to be true, as set in _init()), we shouldn't continue otherwise an onStart callback could be called for example.\n\t\t\t\t\treturn;\n\t\t\t\t} else if (!force && this._firstPT && ((this.vars.lazy !== false && this._duration) || (this.vars.lazy && !this._duration))) {\n\t\t\t\t\tthis._time = this._totalTime = prevTime;\n\t\t\t\t\tthis._rawPrevTime = prevRawPrevTime;\n\t\t\t\t\t_lazyTweens.push(this);\n\t\t\t\t\tthis._lazy = [time, suppressEvents];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently.\n\t\t\t\tif (this._time && !isComplete) {\n\t\t\t\t\tthis.ratio = this._ease.getRatio(this._time / duration);\n\t\t\t\t} else if (isComplete && this._ease._calcEnd) {\n\t\t\t\t\tthis.ratio = this._ease.getRatio((this._time === 0) ? 0 : 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._lazy !== false) { //in case a lazy render is pending, we should flush it because the new render is occurring now (imagine a lazy tween instantiating and then immediately the user calls tween.seek(tween.duration()), skipping to the end - the end render would be forced, and then if we didn't flush the lazy render, it'd fire AFTER the seek(), rendering it at the wrong time.\n\t\t\t\tthis._lazy = false;\n\t\t\t}\n\t\t\tif (!this._active) if (!this._paused && this._time !== prevTime && time >= 0) {\n\t\t\t\tthis._active = true; //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done.\n\t\t\t}\n\t\t\tif (prevTime === 0) {\n\t\t\t\tif (this._startAt) {\n\t\t\t\t\tif (time >= 0) {\n\t\t\t\t\t\tthis._startAt.render(time, true, force);\n\t\t\t\t\t} else if (!callback) {\n\t\t\t\t\t\tcallback = \"_dummyGS\"; //if no callback is defined, use a dummy value just so that the condition at the end evaluates as true because _startAt should render AFTER the normal render loop when the time is negative. We could handle this in a more intuitive way, of course, but the render loop is the MOST important thing to optimize, so this technique allows us to avoid adding extra conditional logic in a high-frequency area.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.vars.onStart) if (this._time !== 0 || duration === 0) if (!suppressEvents) {\n\t\t\t\t\tthis._callback(\"onStart\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tpt = this._firstPT;\n\t\t\twhile (pt) {\n\t\t\t\tif (pt.f) {\n\t\t\t\t\tpt.t[pt.p](pt.c * this.ratio + pt.s);\n\t\t\t\t} else {\n\t\t\t\t\tpt.t[pt.p] = pt.c * this.ratio + pt.s;\n\t\t\t\t}\n\t\t\t\tpt = pt._next;\n\t\t\t}\n\n\t\t\tif (this._onUpdate) {\n\t\t\t\tif (time < 0) if (this._startAt && time !== -0.0001) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.\n\t\t\t\t\tthis._startAt.render(time, true, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\t\t\t\t}\n\t\t\t\tif (!suppressEvents) if (this._time !== prevTime || isComplete || force) {\n\t\t\t\t\tthis._callback(\"onUpdate\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (callback) if (!this._gc || force) { //check _gc because there's a chance that kill() could be called in an onUpdate\n\t\t\t\tif (time < 0 && this._startAt && !this._onUpdate && time !== -0.0001) { //-0.0001 is a special value that we use when looping back to the beginning of a repeated TimelineMax, in which case we shouldn't render the _startAt values.\n\t\t\t\t\tthis._startAt.render(time, true, force);\n\t\t\t\t}\n\t\t\t\tif (isComplete) {\n\t\t\t\t\tif (this._timeline.autoRemoveChildren) {\n\t\t\t\t\t\tthis._enabled(false, false);\n\t\t\t\t\t}\n\t\t\t\t\tthis._active = false;\n\t\t\t\t}\n\t\t\t\tif (!suppressEvents && this.vars[callback]) {\n\t\t\t\t\tthis._callback(callback);\n\t\t\t\t}\n\t\t\t\tif (duration === 0 && this._rawPrevTime === _tinyNum && rawPrevTime !== _tinyNum) { //the onComplete or onReverseComplete could trigger movement of the playhead and for zero-duration tweens (which must discern direction) that land directly back on their start time, we don't want to fire again on the next render. Think of several addPause()'s in a timeline that forces the playhead to a certain spot, but what if it's already paused and another tween is tweening the \"time\" of the timeline? Each time it moves [forward] past that spot, it would move back, and since suppressEvents is true, it'd reset _rawPrevTime to _tinyNum so that when it begins again, the callback would fire (so ultimately it could bounce back and forth during that tween). Again, this is a very uncommon scenario, but possible nonetheless.\n\t\t\t\t\tthis._rawPrevTime = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tp._kill = function(vars, target, overwritingTween) {\n\t\t\tif (vars === \"all\") {\n\t\t\t\tvars = null;\n\t\t\t}\n\t\t\tif (vars == null) if (target == null || target === this.target) {\n\t\t\t\tthis._lazy = false;\n\t\t\t\treturn this._enabled(false, false);\n\t\t\t}\n\t\t\ttarget = (typeof(target) !== \"string\") ? (target || this._targets || this.target) : TweenLite.selector(target) || target;\n\t\t\tvar simultaneousOverwrite = (overwritingTween && this._time && overwritingTween._startTime === this._startTime && this._timeline === overwritingTween._timeline),\n\t\t\t\ti, overwrittenProps, p, pt, propLookup, changed, killProps, record, killed;\n\t\t\tif ((_isArray(target) || _isSelector(target)) && typeof(target[0]) !== \"number\") {\n\t\t\t\ti = target.length;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tif (this._kill(vars, target[i], overwritingTween)) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this._targets) {\n\t\t\t\t\ti = this._targets.length;\n\t\t\t\t\twhile (--i > -1) {\n\t\t\t\t\t\tif (target === this._targets[i]) {\n\t\t\t\t\t\t\tpropLookup = this._propLookup[i] || {};\n\t\t\t\t\t\t\tthis._overwrittenProps = this._overwrittenProps || [];\n\t\t\t\t\t\t\toverwrittenProps = this._overwrittenProps[i] = vars ? this._overwrittenProps[i] || {} : \"all\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (target !== this.target) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\tpropLookup = this._propLookup;\n\t\t\t\t\toverwrittenProps = this._overwrittenProps = vars ? this._overwrittenProps || {} : \"all\";\n\t\t\t\t}\n\n\t\t\t\tif (propLookup) {\n\t\t\t\t\tkillProps = vars || propLookup;\n\t\t\t\t\trecord = (vars !== overwrittenProps && overwrittenProps !== \"all\" && vars !== propLookup && (typeof(vars) !== \"object\" || !vars._tempKill)); //_tempKill is a super-secret way to delete a particular tweening property but NOT have it remembered as an official overwritten property (like in BezierPlugin)\n\t\t\t\t\tif (overwritingTween && (TweenLite.onOverwrite || this.vars.onOverwrite)) {\n\t\t\t\t\t\tfor (p in killProps) {\n\t\t\t\t\t\t\tif (propLookup[p]) {\n\t\t\t\t\t\t\t\tif (!killed) {\n\t\t\t\t\t\t\t\t\tkilled = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tkilled.push(p);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((killed || !vars) && !_onOverwrite(this, overwritingTween, target, killed)) { //if the onOverwrite returned false, that means the user wants to override the overwriting (cancel it).\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (p in killProps) {\n\t\t\t\t\t\tif ((pt = propLookup[p])) {\n\t\t\t\t\t\t\tif (simultaneousOverwrite) { //if another tween overwrites this one and they both start at exactly the same time, yet this tween has already rendered once (for example, at 0.001) because it's first in the queue, we should revert the values to where they were at 0 so that the starting values aren't contaminated on the overwriting tween.\n\t\t\t\t\t\t\t\tif (pt.f) {\n\t\t\t\t\t\t\t\t\tpt.t[pt.p](pt.s);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tpt.t[pt.p] = pt.s;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (pt.pg && pt.t._kill(killProps)) {\n\t\t\t\t\t\t\t\tchanged = true; //some plugins need to be notified so they can perform cleanup tasks first\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!pt.pg || pt.t._overwriteProps.length === 0) {\n\t\t\t\t\t\t\t\tif (pt._prev) {\n\t\t\t\t\t\t\t\t\tpt._prev._next = pt._next;\n\t\t\t\t\t\t\t\t} else if (pt === this._firstPT) {\n\t\t\t\t\t\t\t\t\tthis._firstPT = pt._next;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (pt._next) {\n\t\t\t\t\t\t\t\t\tpt._next._prev = pt._prev;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tpt._next = pt._prev = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdelete propLookup[p];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (record) {\n\t\t\t\t\t\t\toverwrittenProps[p] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!this._firstPT && this._initted) { //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\t\t\t\t\t\tthis._enabled(false, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn changed;\n\t\t};\n\n\t\tp.invalidate = function() {\n\t\t\tif (this._notifyPluginsOfEnabled) {\n\t\t\t\tTweenLite._onPluginEvent(\"_onDisable\", this);\n\t\t\t}\n\t\t\tthis._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null;\n\t\t\tthis._notifyPluginsOfEnabled = this._active = this._lazy = false;\n\t\t\tthis._propLookup = (this._targets) ? {} : [];\n\t\t\tAnimation.prototype.invalidate.call(this);\n\t\t\tif (this.vars.immediateRender) {\n\t\t\t\tthis._time = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\t\t\t\tthis.render(Math.min(0, -this._delay)); //in case delay is negative.\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tp._enabled = function(enabled, ignoreTimeline) {\n\t\t\tif (!_tickerActive) {\n\t\t\t\t_ticker.wake();\n\t\t\t}\n\t\t\tif (enabled && this._gc) {\n\t\t\t\tvar targets = this._targets,\n\t\t\t\t\ti;\n\t\t\t\tif (targets) {\n\t\t\t\t\ti = targets.length;\n\t\t\t\t\twhile (--i > -1) {\n\t\t\t\t\t\tthis._siblings[i] = _register(targets[i], this, true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._siblings = _register(this.target, this, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\tAnimation.prototype._enabled.call(this, enabled, ignoreTimeline);\n\t\t\tif (this._notifyPluginsOfEnabled) if (this._firstPT) {\n\t\t\t\treturn TweenLite._onPluginEvent((enabled ? \"_onEnable\" : \"_onDisable\"), this);\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\n//----TweenLite static methods -----------------------------------------------------\n\n\t\tTweenLite.to = function(target, duration, vars) {\n\t\t\treturn new TweenLite(target, duration, vars);\n\t\t};\n\n\t\tTweenLite.from = function(target, duration, vars) {\n\t\t\tvars.runBackwards = true;\n\t\t\tvars.immediateRender = (vars.immediateRender != false);\n\t\t\treturn new TweenLite(target, duration, vars);\n\t\t};\n\n\t\tTweenLite.fromTo = function(target, duration, fromVars, toVars) {\n\t\t\ttoVars.startAt = fromVars;\n\t\t\ttoVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false);\n\t\t\treturn new TweenLite(target, duration, toVars);\n\t\t};\n\n\t\tTweenLite.delayedCall = function(delay, callback, params, scope, useFrames) {\n\t\t\treturn new TweenLite(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, callbackScope:scope, onReverseComplete:callback, onReverseCompleteParams:params, immediateRender:false, lazy:false, useFrames:useFrames, overwrite:0});\n\t\t};\n\n\t\tTweenLite.set = function(target, vars) {\n\t\t\treturn new TweenLite(target, 0, vars);\n\t\t};\n\n\t\tTweenLite.getTweensOf = function(target, onlyActive) {\n\t\t\tif (target == null) { return []; }\n\t\t\ttarget = (typeof(target) !== \"string\") ? target : TweenLite.selector(target) || target;\n\t\t\tvar i, a, j, t;\n\t\t\tif ((_isArray(target) || _isSelector(target)) && typeof(target[0]) !== \"number\") {\n\t\t\t\ti = target.length;\n\t\t\t\ta = [];\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\ta = a.concat(TweenLite.getTweensOf(target[i], onlyActive));\n\t\t\t\t}\n\t\t\t\ti = a.length;\n\t\t\t\t//now get rid of any duplicates (tweens of arrays of objects could cause duplicates)\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tt = a[i];\n\t\t\t\t\tj = i;\n\t\t\t\t\twhile (--j > -1) {\n\t\t\t\t\t\tif (t === a[j]) {\n\t\t\t\t\t\t\ta.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (target._gsTweenID) {\n\t\t\t\ta = _register(target).concat();\n\t\t\t\ti = a.length;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tif (a[i]._gc || (onlyActive && !a[i].isActive())) {\n\t\t\t\t\t\ta.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn a || [];\n\t\t};\n\n\t\tTweenLite.killTweensOf = TweenLite.killDelayedCallsTo = function(target, onlyActive, vars) {\n\t\t\tif (typeof(onlyActive) === \"object\") {\n\t\t\t\tvars = onlyActive; //for backwards compatibility (before \"onlyActive\" parameter was inserted)\n\t\t\t\tonlyActive = false;\n\t\t\t}\n\t\t\tvar a = TweenLite.getTweensOf(target, onlyActive),\n\t\t\t\ti = a.length;\n\t\t\twhile (--i > -1) {\n\t\t\t\ta[i]._kill(vars, target);\n\t\t\t}\n\t\t};\n\n\n\n/*\n * ----------------------------------------------------------------\n * TweenPlugin (could easily be split out as a separate file/class, but included for ease of use (so that people don't need to include another script call before loading plugins which is easy to forget)\n * ----------------------------------------------------------------\n */\n\t\tvar TweenPlugin = _class(\"plugins.TweenPlugin\", function(props, priority) {\n\t\t\t\t\tthis._overwriteProps = (props || \"\").split(\",\");\n\t\t\t\t\tthis._propName = this._overwriteProps[0];\n\t\t\t\t\tthis._priority = priority || 0;\n\t\t\t\t\tthis._super = TweenPlugin.prototype;\n\t\t\t\t}, true);\n\n\t\tp = TweenPlugin.prototype;\n\t\tTweenPlugin.version = \"1.19.0\";\n\t\tTweenPlugin.API = 2;\n\t\tp._firstPT = null;\n\t\tp._addTween = _addPropTween;\n\t\tp.setRatio = _setRatio;\n\n\t\tp._kill = function(lookup) {\n\t\t\tvar a = this._overwriteProps,\n\t\t\t\tpt = this._firstPT,\n\t\t\t\ti;\n\t\t\tif (lookup[this._propName] != null) {\n\t\t\t\tthis._overwriteProps = [];\n\t\t\t} else {\n\t\t\t\ti = a.length;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tif (lookup[a[i]] != null) {\n\t\t\t\t\t\ta.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (pt) {\n\t\t\t\tif (lookup[pt.n] != null) {\n\t\t\t\t\tif (pt._next) {\n\t\t\t\t\t\tpt._next._prev = pt._prev;\n\t\t\t\t\t}\n\t\t\t\t\tif (pt._prev) {\n\t\t\t\t\t\tpt._prev._next = pt._next;\n\t\t\t\t\t\tpt._prev = null;\n\t\t\t\t\t} else if (this._firstPT === pt) {\n\t\t\t\t\t\tthis._firstPT = pt._next;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpt = pt._next;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t\tp._mod = p._roundProps = function(lookup) {\n\t\t\tvar pt = this._firstPT,\n\t\t\t\tval;\n\t\t\twhile (pt) {\n\t\t\t\tval = lookup[this._propName] || (pt.n != null && lookup[ pt.n.split(this._propName + \"_\").join(\"\") ]);\n\t\t\t\tif (val && typeof(val) === \"function\") { //some properties that are very plugin-specific add a prefix named after the _propName plus an underscore, so we need to ignore that extra stuff here.\n\t\t\t\t\tif (pt.f === 2) {\n\t\t\t\t\t\tpt.t._applyPT.m = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpt.m = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpt = pt._next;\n\t\t\t}\n\t\t};\n\n\t\tTweenLite._onPluginEvent = function(type, tween) {\n\t\t\tvar pt = tween._firstPT,\n\t\t\t\tchanged, pt2, first, last, next;\n\t\t\tif (type === \"_onInitAllProps\") {\n\t\t\t\t//sorts the PropTween linked list in order of priority because some plugins need to render earlier/later than others, like MotionBlurPlugin applies its effects after all x/y/alpha tweens have rendered on each frame.\n\t\t\t\twhile (pt) {\n\t\t\t\t\tnext = pt._next;\n\t\t\t\t\tpt2 = first;\n\t\t\t\t\twhile (pt2 && pt2.pr > pt.pr) {\n\t\t\t\t\t\tpt2 = pt2._next;\n\t\t\t\t\t}\n\t\t\t\t\tif ((pt._prev = pt2 ? pt2._prev : last)) {\n\t\t\t\t\t\tpt._prev._next = pt;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfirst = pt;\n\t\t\t\t\t}\n\t\t\t\t\tif ((pt._next = pt2)) {\n\t\t\t\t\t\tpt2._prev = pt;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlast = pt;\n\t\t\t\t\t}\n\t\t\t\t\tpt = next;\n\t\t\t\t}\n\t\t\t\tpt = tween._firstPT = first;\n\t\t\t}\n\t\t\twhile (pt) {\n\t\t\t\tif (pt.pg) if (typeof(pt.t[type]) === \"function\") if (pt.t[type]()) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tpt = pt._next;\n\t\t\t}\n\t\t\treturn changed;\n\t\t};\n\n\t\tTweenPlugin.activate = function(plugins) {\n\t\t\tvar i = plugins.length;\n\t\t\twhile (--i > -1) {\n\t\t\t\tif (plugins[i].API === TweenPlugin.API) {\n\t\t\t\t\t_plugins[(new plugins[i]())._propName] = plugins[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\n\t\t//provides a more concise way to define plugins that have no dependencies besides TweenPlugin and TweenLite, wrapping common boilerplate stuff into one function (added in 1.9.0). You don't NEED to use this to define a plugin - the old way still works and can be useful in certain (rare) situations.\n\t\t_gsDefine.plugin = function(config) {\n\t\t\tif (!config || !config.propName || !config.init || !config.API) { throw \"illegal plugin definition.\"; }\n\t\t\tvar propName = config.propName,\n\t\t\t\tpriority = config.priority || 0,\n\t\t\t\toverwriteProps = config.overwriteProps,\n\t\t\t\tmap = {init:\"_onInitTween\", set:\"setRatio\", kill:\"_kill\", round:\"_mod\", mod:\"_mod\", initAll:\"_onInitAllProps\"},\n\t\t\t\tPlugin = _class(\"plugins.\" + propName.charAt(0).toUpperCase() + propName.substr(1) + \"Plugin\",\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tTweenPlugin.call(this, propName, priority);\n\t\t\t\t\t\tthis._overwriteProps = overwriteProps || [];\n\t\t\t\t\t}, (config.global === true)),\n\t\t\t\tp = Plugin.prototype = new TweenPlugin(propName),\n\t\t\t\tprop;\n\t\t\tp.constructor = Plugin;\n\t\t\tPlugin.API = config.API;\n\t\t\tfor (prop in map) {\n\t\t\t\tif (typeof(config[prop]) === \"function\") {\n\t\t\t\t\tp[map[prop]] = config[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t\tPlugin.version = config.version;\n\t\t\tTweenPlugin.activate([Plugin]);\n\t\t\treturn Plugin;\n\t\t};\n\n\n\t\t//now run through all the dependencies discovered and if any are missing, log that to the console as a warning. This is why it's best to have TweenLite load last - it can check all the dependencies for you.\n\t\ta = window._gsQueue;\n\t\tif (a) {\n\t\t\tfor (i = 0; i < a.length; i++) {\n\t\t\t\ta[i]();\n\t\t\t}\n\t\t\tfor (p in _defLookup) {\n\t\t\t\tif (!_defLookup[p].func) {\n\t\t\t\t\twindow.console.log(\"GSAP encountered missing dependency: \" + p);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t_tickerActive = false; //ensures that the first official animation forces a ticker.tick() to update the time when it is instantiated\n\n})((typeof(module) !== \"undefined\" && module.exports && typeof(global) !== \"undefined\") ? global : this || window, \"TweenMax\");\n\n\n// WEBPACK FOOTER //\n// node_modules/gsap/TweenMax.js","/*!\n * VERSION: 1.9.0\n * DATE: 2018-02-15\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2018, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\nvar _gsScope = (typeof(module) !== \"undefined\" && module.exports && typeof(global) !== \"undefined\") ? global : this || window; //helps ensure compatibility with AMD/RequireJS and CommonJS/Node\n(_gsScope._gsQueue || (_gsScope._gsQueue = [])).push( function() {\n\n\t\"use strict\";\n\n\tvar _doc = (_gsScope.document || {}).documentElement,\n\t\t_window = _gsScope,\n\t\t_max = function(element, axis) {\n\t\t\tvar dim = (axis === \"x\") ? \"Width\" : \"Height\",\n\t\t\t\tscroll = \"scroll\" + dim,\n\t\t\t\tclient = \"client\" + dim,\n\t\t\t\tbody = document.body;\n\t\t\treturn (element === _window || element === _doc || element === body) ? Math.max(_doc[scroll], body[scroll]) - (_window[\"inner\" + dim] || _doc[client] || body[client]) : element[scroll] - element[\"offset\" + dim];\n\t\t},\n\t\t_unwrapElement = function(value) {\n\t\t\tif (typeof(value) === \"string\") {\n\t\t\t\tvalue = TweenLite.selector(value);\n\t\t\t}\n\t\t\tif (value.length && value !== _window && value[0] && value[0].style && !value.nodeType) {\n\t\t\t\tvalue = value[0];\n\t\t\t}\n\t\t\treturn (value === _window || (value.nodeType && value.style)) ? value : null;\n\t\t},\n\t\t_buildGetter = function(e, axis) { //pass in an element and an axis (\"x\" or \"y\") and it'll return a getter function for the scroll position of that element (like scrollTop or scrollLeft, although if the element is the window, it'll use the pageXOffset/pageYOffset or the documentElement's scrollTop/scrollLeft or document.body's. Basically this streamlines things and makes a very fast getter across browsers.\n\t\t\tvar p = \"scroll\" + ((axis === \"x\") ? \"Left\" : \"Top\");\n\t\t\tif (e === _window) {\n\t\t\t\tif (e.pageXOffset != null) {\n\t\t\t\t\tp = \"page\" + axis.toUpperCase() + \"Offset\";\n\t\t\t\t} else if (_doc[p] != null) {\n\t\t\t\t\te = _doc;\n\t\t\t\t} else {\n\t\t\t\t\te = document.body;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn function() {\n\t\t\t\treturn e[p];\n\t\t\t};\n\t\t},\n\t\t_getOffset = function(element, container) {\n\t\t\tvar rect = _unwrapElement(element).getBoundingClientRect(),\n\t\t\t\tisRoot = (!container || container === _window || container === document.body),\n\t\t\t\tcRect = (isRoot ? _doc : container).getBoundingClientRect(),\n\t\t\t\toffsets = {x: rect.left - cRect.left, y: rect.top - cRect.top};\n\t\t\tif (!isRoot && container) { //only add the current scroll position if it's not the window/body.\n\t\t\t\toffsets.x += _buildGetter(container, \"x\")();\n\t\t\t\toffsets.y += _buildGetter(container, \"y\")();\n\t\t\t}\n\t\t\treturn offsets;\n\t\t},\n\t\t_parseVal = function(value, target, axis) {\n\t\t\tvar type = typeof(value);\n\t\t\treturn !isNaN(value) ? parseFloat(value) : (type === \"number\" || (type === \"string\" && value.charAt(1) === \"=\")) ? value : (value === \"max\") ? _max(target, axis) : Math.min(_max(target, axis), _getOffset(value, target)[axis]);\n\t\t},\n\n\t\tScrollToPlugin = _gsScope._gsDefine.plugin({\n\t\t\tpropName: \"scrollTo\",\n\t\t\tAPI: 2,\n\t\t\tglobal: true,\n\t\t\tversion:\"1.9.0\",\n\n\t\t\t//called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.\n\t\t\tinit: function(target, value, tween) {\n\t\t\t\tthis._wdw = (target === _window);\n\t\t\t\tthis._target = target;\n\t\t\t\tthis._tween = tween;\n\t\t\t\tif (typeof(value) !== \"object\") {\n\t\t\t\t\tvalue = {y:value}; //if we don't receive an object as the parameter, assume the user intends \"y\".\n\t\t\t\t\tif (typeof(value.y) === \"string\" && value.y !== \"max\" && value.y.charAt(1) !== \"=\") {\n\t\t\t\t\t\tvalue.x = value.y;\n\t\t\t\t\t}\n\t\t\t\t} else if (value.nodeType) {\n\t\t\t\t\tvalue = {y:value, x:value};\n\t\t\t\t}\n\t\t\t\tthis.vars = value;\n\t\t\t\tthis._autoKill = (value.autoKill !== false);\n\t\t\t\tthis.getX = _buildGetter(target, \"x\");\n\t\t\t\tthis.getY = _buildGetter(target, \"y\");\n\t\t\t\tthis.x = this.xPrev = this.getX();\n\t\t\t\tthis.y = this.yPrev = this.getY();\n\t\t\t\tif (value.x != null) {\n\t\t\t\t\tthis._addTween(this, \"x\", this.x, _parseVal(value.x, target, \"x\") - (value.offsetX || 0), \"scrollTo_x\", true);\n\t\t\t\t\tthis._overwriteProps.push(\"scrollTo_x\");\n\t\t\t\t} else {\n\t\t\t\t\tthis.skipX = true;\n\t\t\t\t}\n\t\t\t\tif (value.y != null) {\n\t\t\t\t\tthis._addTween(this, \"y\", this.y, _parseVal(value.y, target, \"y\") - (value.offsetY || 0), \"scrollTo_y\", true);\n\t\t\t\t\tthis._overwriteProps.push(\"scrollTo_y\");\n\t\t\t\t} else {\n\t\t\t\t\tthis.skipY = true;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t//called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)\n\t\t\tset: function(v) {\n\t\t\t\tthis._super.setRatio.call(this, v);\n\n\t\t\t\tvar x = (this._wdw || !this.skipX) ? this.getX() : this.xPrev,\n\t\t\t\t\ty = (this._wdw || !this.skipY) ? this.getY() : this.yPrev,\n\t\t\t\t\tyDif = y - this.yPrev,\n\t\t\t\t\txDif = x - this.xPrev,\n\t\t\t\t\tthreshold = ScrollToPlugin.autoKillThreshold;\n\n\t\t\t\tif (this.x < 0) { //can't scroll to a position less than 0! Might happen if someone uses a Back.easeOut or Elastic.easeOut when scrolling back to the top of the page (for example)\n\t\t\t\t\tthis.x = 0;\n\t\t\t\t}\n\t\t\t\tif (this.y < 0) {\n\t\t\t\t\tthis.y = 0;\n\t\t\t\t}\n\t\t\t\tif (this._autoKill) {\n\t\t\t\t\t//note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.\n\t\t\t\t\tif (!this.skipX && (xDif > threshold || xDif < -threshold) && x < _max(this._target, \"x\")) {\n\t\t\t\t\t\tthis.skipX = true; //if the user scrolls separately, we should stop tweening!\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.skipY && (yDif > threshold || yDif < -threshold) && y < _max(this._target, \"y\")) {\n\t\t\t\t\t\tthis.skipY = true; //if the user scrolls separately, we should stop tweening!\n\t\t\t\t\t}\n\t\t\t\t\tif (this.skipX && this.skipY) {\n\t\t\t\t\t\tthis._tween.kill();\n\t\t\t\t\t\tif (this.vars.onAutoKill) {\n\t\t\t\t\t\t\tthis.vars.onAutoKill.apply(this.vars.onAutoKillScope || this._tween, this.vars.onAutoKillParams || []);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._wdw) {\n\t\t\t\t\t_window.scrollTo((!this.skipX) ? this.x : x, (!this.skipY) ? this.y : y);\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.skipY) {\n\t\t\t\t\t\tthis._target.scrollTop = this.y;\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.skipX) {\n\t\t\t\t\t\tthis._target.scrollLeft = this.x;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.xPrev = this.x;\n\t\t\t\tthis.yPrev = this.y;\n\t\t\t}\n\n\t\t}),\n\t\tp = ScrollToPlugin.prototype;\n\n\tScrollToPlugin.max = _max;\n\tScrollToPlugin.getOffset = _getOffset;\n\tScrollToPlugin.buildGetter = _buildGetter;\n\tScrollToPlugin.autoKillThreshold = 7;\n\n\tp._kill = function(lookup) {\n\t\tif (lookup.scrollTo_x) {\n\t\t\tthis.skipX = true;\n\t\t}\n\t\tif (lookup.scrollTo_y) {\n\t\t\tthis.skipY = true;\n\t\t}\n\t\treturn this._super._kill.call(this, lookup);\n\t};\n\n}); if (_gsScope._gsDefine) { _gsScope._gsQueue.pop()(); }\n\n//export to AMD/RequireJS and CommonJS/Node (precursor to full modular build system coming at a later date)\n(function(name) {\n\t\"use strict\";\n\tvar getGlobal = function() {\n\t\treturn (_gsScope.GreenSockGlobals || _gsScope)[name];\n\t};\n\tif (typeof(module) !== \"undefined\" && module.exports) { //node\n\t\trequire(\"gsap/TweenLite\");\n\t\tmodule.exports = getGlobal();\n\t} else if (typeof(define) === \"function\" && define.amd) { //AMD\n\t\tdefine([\"gsap/TweenLite\"], getGlobal);\n\t}\n}(\"ScrollToPlugin\"));\n\n\n// WEBPACK FOOTER //\n// node_modules/gsap/ScrollToPlugin.js","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var s=i[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var i={};return t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,\"a\",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=2)}([function(e,t,i){\"use strict\";function n(e,t){function i(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}function n(e,t){return e&&e!==document?i(e,t)?e:n(e.parentNode,t):null}return i(e,t)||n(e,t)}function s(e,t){var i=e.scrollTop+e.offsetTop,n=i+e.clientHeight,s=t.offsetTop,a=s+t.clientHeight;sn&&(e.scrollTop+=a-n)}function a(e,t,i){var n=e.offsetHeight,s=e.getBoundingClientRect(),a=i?s.top:s.top-n,o=i?s.bottom:s.bottom+n;return a<=0?\"below\":o>=window.innerHeight?\"above\":i?t:\"below\"}function o(e,t,i){void 0===t&&(t=100),void 0===i&&(i=!1);var n;return function(){var s=this,a=arguments,o=function(){n=null,i||e.apply(s,a)},l=i&&!n;clearTimeout(n),n=setTimeout(o,t),l&&e.apply(s,a)}}function l(e,t,i){if(!Array.isArray(e))return e[t]===i;for(var n=0;n=0&&(e=e.substring(0,s)+''+e.substring(s,s+t.length)+\"\"+e.substring(s+t.length)),e}t.__esModule=!0,t.hasClassInTree=n,t.ensureElementInView=s,t.putContent=a,t.debounce=o,t.isValueInArrayOfObjects=l,t.highlight=r},function(e,t,i){\"use strict\";function n(e){if(!e)return void console.error(\"Data must be an array of objects\");for(var t=!1,i=0,n=0;n0,l=function(){return t.stopPropagation(),t.preventDefault(),t.returnValue=!1,!1};return!o&&-a>n-s-i?(e.scrollTop=n,l()):o&&a>i?(e.scrollTop=0,l()):void 0},e},e.prototype.options=function(e){void 0===e&&(e=\"\");var t=this.main.data.filtered||this.main.data.data;if(this.list.innerHTML=\"\",\"\"!==e){var i=document.createElement(\"div\");return i.classList.add(this.main.config.option),i.classList.add(this.main.config.disabled),i.innerHTML=e,void this.list.appendChild(i)}if(this.main.config.isAjax&&this.main.config.isSearching){var i=document.createElement(\"div\");return i.classList.add(this.main.config.option),i.classList.add(this.main.config.disabled),i.innerHTML=\"Searching...\",void this.list.appendChild(i)}if(0===t.length){var n=document.createElement(\"div\");return n.classList.add(this.main.config.option),n.classList.add(this.main.config.disabled),n.innerHTML=this.main.config.searchText,void this.list.appendChild(n)}for(var s=0;s1&&(p.multitouch=!0),p.startX=e.changedTouches[0].pageX,p.startY=e.changedTouches[0].pageY},B=function(e){if(!b&&!p.multitouch){e.preventDefault?e.preventDefault():e.returnValue=!1;var t=e.touches[0]||e.changedTouches[0];t.pageX-p.startX>40?(b=!0,q()):t.pageX-p.startX<-40?(b=!0,j()):p.startY-t.pageY>100&&I()}},T=function(){p.count--,p.count<=0&&(p.multitouch=!1),b=!1},N=function(){T()},L=function(t){\"block\"===e.style.display&&e.contains&&!e.contains(t.target)&&(t.stopPropagation(),H())};function A(e){if(v.hasOwnProperty(e)){var t=v[e].galleries;[].forEach.call(t,function(e){[].forEach.call(e,function(e){V(e.imageElement,\"click\",e.eventHandler)}),d===e&&(d=[])}),delete v[e]}}function P(e){switch(e.keyCode){case 37:q();break;case 39:j();break;case 27:I()}}function S(i,a){if(d!==i){for(d=i,function(i){i||(i={});for(var a in u)r[a]=u[a],\"undefined\"!=typeof i[a]&&(r[a]=i[a]);t.style.transition=t.style.webkitTransition=\"fadeIn\"===r.animation?\"opacity .4s ease\":\"slideIn\"===r.animation?\"\":\"none\",\"auto\"===r.buttons&&(\"ontouchstart\"in window||1===d.length)&&(r.buttons=!1);n.style.display=o.style.display=r.buttons?\"\":\"none\";try{e.style.backgroundColor=r.overlayBackgroundColor}catch(s){}}(a);t.firstChild;)t.removeChild(t.firstChild);h.length=0;for(var s,l=[],c=[],f=0;f
',r.captions&&s){var c=W(\"figcaption\");c.id=\"baguetteBox-figcaption-\"+e,c.innerHTML=s,u.appendChild(c)}n.appendChild(u);var f=W(\"img\");f.onload=function(){var n=document.querySelector(\"#baguette-img-\"+e+\" .baguetteBox-spinner\");u.removeChild(n),!r.async&&t&&t()},f.setAttribute(\"src\",l),f.alt=a&&a.alt||\"\",r.titleTag&&s&&(f.title=s),u.appendChild(f),r.async&&t&&t()}}function j(){return X(f+1)}function q(){return X(f-1)}function X(e,t){return!g&&e>=0&&e=h.length?(r.animation&&M(\"right\"),!1):(Y(f=e,function(){R(f),z(f)}),O(),r.onChange&&r.onChange(f,h.length),!0)}function M(e){t.className=\"bounce-from-\"+e,setTimeout(function(){t.className=\"\"},400)}function O(){var e=100*-f+\"%\";\"fadeIn\"===r.animation?(t.style.opacity=0,setTimeout(function(){c.transforms?t.style.transform=t.style.webkitTransform=\"translate3d(\"+e+\",0,0)\":t.style.left=e,t.style.opacity=1},400)):c.transforms?t.style.transform=t.style.webkitTransform=\"translate3d(\"+e+\",0,0)\":t.style.left=e}function R(e){e-f>=r.preload||Y(e+1,function(){R(e+1)})}function z(e){f-e>=r.preload||Y(e-1,function(){z(e-1)})}function D(e,t,n,o){e.addEventListener?e.addEventListener(t,n,o):e.attachEvent(\"on\"+t,function(e){(e=e||window.event).target=e.target||e.srcElement,n(e)})}function V(e,t,n,o){e.removeEventListener?e.removeEventListener(t,n,o):e.detachEvent(\"on\"+t,n)}function U(e){return document.getElementById(e)}function W(e){return document.createElement(e)}return[].forEach||(Array.prototype.forEach=function(e,t){for(var n=0;n\",\"http://www.w3.org/2000/svg\"===(f.firstChild&&f.firstChild.namespaceURI)),c.passiveEvents=function(){var e=!1;try{var t=Object.defineProperty({},\"passive\",{get:function(){e=!0}});window.addEventListener(\"test\",null,t)}catch(n){}return e}(),function(){if(e=U(\"baguetteBox-overlay\"))return t=U(\"baguetteBox-slider\"),n=U(\"previous-button\"),o=U(\"next-button\"),void(i=U(\"close-button\"));var r;(e=W(\"div\")).setAttribute(\"role\",\"dialog\"),e.id=\"baguetteBox-overlay\",document.getElementsByTagName(\"body\")[0].appendChild(e),(t=W(\"div\")).id=\"baguetteBox-slider\",e.appendChild(t),(n=W(\"button\")).setAttribute(\"type\",\"button\"),n.id=\"previous-button\",n.setAttribute(\"aria-label\",\"Previous\"),n.innerHTML=c.svg?a:\"<\",e.appendChild(n),(o=W(\"button\")).setAttribute(\"type\",\"button\"),o.id=\"next-button\",o.setAttribute(\"aria-label\",\"Next\"),o.innerHTML=c.svg?s:\">\",e.appendChild(o),(i=W(\"button\")).setAttribute(\"type\",\"button\"),i.id=\"close-button\",i.setAttribute(\"aria-label\",\"Close\"),i.innerHTML=c.svg?l:\"×\",e.appendChild(i),n.className=o.className=i.className=\"baguetteBox-button\",r=c.passiveEvents?{passive:!0}:null,D(e,\"click\",w),D(n,\"click\",k),D(o,\"click\",x),D(i,\"click\",C),D(t,\"contextmenu\",N),D(e,\"touchstart\",E,r),D(e,\"touchmove\",B,r),D(e,\"touchend\",T),D(document,\"focus\",L,!0)}(),A(r),g=r,p=u,b=document.querySelectorAll(g),h={galleries:[],nodeList:b},v[g]=h,[].forEach.call(b,function(e){p&&p.filter&&(m=p.filter);var t=[];if(t=\"A\"===e.tagName?[e]:e.getElementsByTagName(\"a\"),0!==(t=[].filter.call(t,function(e){if(-1===e.className.indexOf(p&&p.ignoreClass))return m.test(e.href)})).length){var n=[];[].forEach.call(t,function(e,t){var o=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,S(n,p),F(t)},i={eventHandler:o,imageElement:e};D(e,\"click\",o),n.push(i)}),h.galleries.push(n)}}),h.galleries},show:X,showNext:j,showPrevious:q,hide:I,destroy:function(){var a;a=c.passiveEvents?{passive:!0}:null,V(e,\"click\",w),V(n,\"click\",k),V(o,\"click\",x),V(i,\"click\",C),V(t,\"contextmenu\",N),V(e,\"touchstart\",E,a),V(e,\"touchmove\",B,a),V(e,\"touchend\",T),V(document,\"focus\",L,!0),function(){for(var e in v)v.hasOwnProperty(e)&&A(e)}(),V(document,\"keydown\",P),document.getElementsByTagName(\"body\")[0].removeChild(document.getElementById(\"baguetteBox-overlay\")),v={},d=[],f=0}}});\n\n\n// WEBPACK FOOTER //\n// node_modules/baguettebox.js/dist/baguetteBox.min.js","/**\n * Use this class to ensure Google Maps API javascript is loaded before running any google map specific code.\n */\nclass GoogleMapsApi {\n /**\n * Constructor set up config.\n */\n constructor() {\n // api key for google maps\n this.apiKey = GOOGLE_API_KEY;\n\n // set a globally scoped callback if it doesn't already exist\n if (!window._GoogleMapsApi) {\n this.callbackName = '_GoogleMapsApi.mapLoaded';\n window._GoogleMapsApi = this;\n window._GoogleMapsApi.mapLoaded = this.mapLoaded.bind(this);\n }\n }\n\n /**\n * Load the Google Maps API javascript\n */\n load() {\n if (!this.promise) {\n this.promise = new Promise(resolve => {\n this.resolve = resolve;\n if (typeof window.google === 'undefined') {\n const script = document.createElement('script');\n script.src = `//maps.googleapis.com/maps/api/js?v=3.exp&key=${this.apiKey}&callback=${this.callbackName}`;\n script.async = true;\n document.body.append(script);\n } else {\n this.resolve();\n }\n });\n }\n\n return this.promise;\n }\n\n /**\n * Globally scoped callback for the map loaded\n */\n mapLoaded() {\n if (this.resolve) {\n this.resolve();\n }\n }\n}\n\nexport default GoogleMapsApi;\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/map/api.js","// @TODO: Add comments\nclass Map {\n constructor(component, zoom = 13) {\n this.component = component;\n this.mapElement = this.component.querySelector('.map__canvas');\n this.address = this.mapElement.dataset.address;\n this.lat = (this.mapElement.dataset.lat ? this.mapElement.dataset.lat : 48.432562);\n this.lng = (this.mapElement.dataset.lng ? this.mapElement.dataset.lng : -123.367408);\n this.info = {\n heading: this.mapElement.dataset.heading,\n content: this.mapElement.dataset.content,\n image : this.mapElement.dataset.image,\n }\n\n this.options = {\n zoom: zoom,\n center: new google.maps.LatLng(this.lat, this.lng),\n panControl: false,\n zoomControl: true,\n scaleControl: false,\n scrollwheel: false,\n styles: [{\"featureType\":\"water\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#e9e9e9\"},{\"lightness\":17}]},{\"featureType\":\"landscape\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#f5f5f5\"},{\"lightness\":20}]},{\"featureType\":\"road.highway\",\"elementType\":\"geometry.fill\",\"stylers\":[{\"color\":\"#ffffff\"},{\"lightness\":17}]},{\"featureType\":\"road.highway\",\"elementType\":\"geometry.stroke\",\"stylers\":[{\"color\":\"#ffffff\"},{\"lightness\":29},{\"weight\":0.2}]},{\"featureType\":\"road.arterial\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#ffffff\"},{\"lightness\":18}]},{\"featureType\":\"road.local\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#ffffff\"},{\"lightness\":16}]},{\"featureType\":\"poi\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#f5f5f5\"},{\"lightness\":21}]},{\"featureType\":\"poi.park\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#dedede\"},{\"lightness\":21}]},{\"elementType\":\"labels.text.stroke\",\"stylers\":[{\"visibility\":\"on\"},{\"color\":\"#ffffff\"},{\"lightness\":16}]},{\"elementType\":\"labels.text.fill\",\"stylers\":[{\"saturation\":36},{\"color\":\"#333333\"},{\"lightness\":40}]},{\"elementType\":\"labels.icon\",\"stylers\":[{\"visibility\":\"off\"}]},{\"featureType\":\"transit\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#f2f2f2\"},{\"lightness\":19}]},{\"featureType\":\"administrative\",\"elementType\":\"geometry.fill\",\"stylers\":[{\"color\":\"#fefefe\"},{\"lightness\":20}]},{\"featureType\":\"administrative\",\"elementType\":\"geometry.stroke\",\"stylers\":[{\"color\":\"#fefefe\"},{\"lightness\":17},{\"weight\":1.2}]}],\n }\n\n this.map = new google.maps.Map(this.mapElement, this.options);\n this.pins = this.component.querySelectorAll('.map__pin.is-active');\n this.center = this.map.getCenter();\n this.positions = [];\n this.markers = [];\n this.infoWindow = new google.maps.InfoWindow({\n content: this.infoBox(),\n size: new google.maps.Size(150, 50),\n });\n\n this.addPrimaryMarker();\n this.addAllMarkers();\n\n google.maps.event.addDomListener(window, 'resize', () => {\n this.map.setCenter(this.center);\n });\n\n google.maps.event.addDomListener(window, 'orientationchange', () => {\n this.map.setCenter(this.center);\n });\n\n google.maps.event.addListener(this.map, 'zoom_changed', () => {\n setTimeout(() => {\n var cnt = this.map.getCenter();\n cnt.e+=0.000001;\n this.map.panTo(cnt);\n cnt.e-=0.000001;\n this.map.panTo(cnt);\n }, 100);\n });\n\n let pinFilters = this.component.querySelectorAll('.legend__pin');\n\n pinFilters.forEach(filter => {\n filter.onclick = (e) => {\n let pins = this.component.querySelectorAll('.map__pin');\n\n pinFilters.forEach(filter => {\n filter.classList.remove('is-active');\n });\n\n e.target.classList.add('is-active');\n\n if (e.target.dataset.cat === 'all') {\n pins.forEach(pin => {\n pin.classList.add('is-active');\n });\n } else {\n pins.forEach(pin => {\n pin.classList.remove('is-active');\n });\n\n this.component.querySelectorAll(`.map__pin[data-cat=${e.target.dataset.cat}]`).forEach(pin => {\n pin.classList.add('is-active')\n });\n }\n\n this.setMapOnAll();\n }\n });\n }\n \n infoBox(info = this.info, address = this.address) {\n let content = '';\n\n if (this.address) {\n content += '
';\n content += (info.image ? info.image : '');\n content += `

${info.heading}

`;\n content += `${info.content}`;\n content += `${address}`;\n content += `View Larger`\n content += '
';\n }\n\n return content;\n }\n\n resetCenter() {\n let bounds = new google.maps.LatLngBounds();\n\n this.positions.forEach(position => {\n bounds.extend(position);\n });\n\n google.maps.event.addListener(this.map, 'zoom_changed', () => {\n let boundsListener = google.maps.event.addListener(this.map, 'bounds_changed', () => {\n if (this.map.getZoom() > this.zoom && this.map.initialZoom === true) {\n this.map.setZoom(this.zoom);\n this.map.initialZoom = false;\n }\n google.maps.event.removeListener(boundsListener);\n });\n });\n\n this.map.initialZoom = true;\n this.map.fitBounds(bounds);\n // this.map.setCenter(bounds.getCenter());\n\n this.center = this.map.getCenter();\n }\n\n addMarker(latLng, icon, infoWindow) {\n let marker = new google.maps.Marker({\n position: latLng,\n map: this.map,\n icon: icon,\n animation: google.maps.Animation.DROP,\n });\n\n google.maps.event.addListener(marker, 'click', (marker => {\n return () => {\n this.infoWindow.setContent(infoWindow);\n this.infoWindow.open(this.map, marker);\n }\n })(marker));\n\n return marker;\n }\n\n addMarkerWithTimeout(pin, timeout) {\n let pinLatLng = new google.maps.LatLng(pin.dataset.lat, pin.dataset.lng);\n this.positions.push(pinLatLng);\n\n setTimeout(() => {\n let icon = {};\n\n if (pin.dataset.icon) {\n icon = {\n url: pin.dataset.icon,\n size: new google.maps.Size(32, 32),\n scaledSize: new google.maps.Size(24, 24),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(12, 12),\n };\n } else {\n icon = {\n path: google.maps.SymbolPath.CIRCLE,\n fillColor: pin.dataset.color,\n fillOpacity: 1,\n scale: 9,\n strokeWeight: 2,\n strokeColor: '#ffffff',\n };\n }\n\n let infoWindow = this.infoBox({\n heading: pin.dataset.heading,\n content: pin.dataset.content,\n image: pin.dataset.image,\n }, pin.dataset.address);\n\n let marker = this.addMarker(pinLatLng, icon, infoWindow);\n \n this.markers.push(marker);\n }, timeout);\n }\n\n addPrimaryMarker() {\n let icon = {\n path: 'M19.4,0C8.7,0,0,8.7,0,19.4c0,14.9,19.4,32.8,19.4,39.2c-0.1-6.3,19.4-24.4,19.4-39.2C38.7,8.7,30,0,19.4,0z M19.4,27.1c-4.1,0-7.3-3.3-7.3-7.3c0-4.1,3.3-7.3,7.3-7.3c4.1,0,7.3,3.3,7.3,7.3C26.7,23.9,23.4,27.1,19.4,27.1z',\n fillColor: '#82c341',\n fillOpacity: 1,\n scale: 1,\n strokeWeight: 0,\n size: new google.maps.Size(11, 22),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(20, 50),\n };\n\n /**\n * If you need to use an image\n * Must know the size of the image, and then scale that image down for retina use\n */\n // var icon = {\n // url:'PATH TO PIN',\n // size: new google.maps.Size(47,80),\n // scaledSize: new google.maps.Size(31.333333333, 53.333333333),\n // origin: new google.maps.Point(0, 0),\n // anchor: new google.maps.Point(15.66665, 26.66665)\n // };\n this.positions.push(this.options.center);\n\n this.primaryMarker = this.addMarker(this.options.center, icon, this.infoBox());\n this.markers.push(this.primaryMarker);\n }\n\n addAllMarkers() {\n let timeout = 0;\n\n this.pins.forEach(pin => {\n if (!pin.dataset.lat || !pin.dataset.lng) {\n return;\n }\n\n this.addMarkerWithTimeout(pin, timeout);\n timeout += 5;\n });\n }\n\n clearAllMarkers() {\n this.markers.forEach(marker => {\n if (marker !== this.primaryMarker) {\n marker.setMap(null);\n }\n });\n\n this.positions = [];\n this.markers = [];\n\n this.positions.push(this.primaryMarker.position);\n this.markers.push(this.primaryMarker);\n }\n\n setMapOnAll() {\n this.clearAllMarkers();\n\n this.pins = this.component.querySelectorAll('.map__pin.is-active');\n this.addAllMarkers();\n this.resetCenter();\n }\n}\n\nexport default Map;\n\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/map/map.js","class Accordion {\n // constructor(component) {\n // let items = component.querySelectorAll('.accordion__item');\n \n // items.forEach(item => {\n // let content = item.querySelector('.accordion__content');\n // content.setAttribute('data-height', content.offsetHeight);\n // content.style.height = 0;\n\n // item.querySelector('.js-accordion__toggle').onclick = () => {\n // let isActive = (item.classList.contains('is-active'));\n \n // // Collapse active siblings and set to inactive\n // component.querySelectorAll('.accordion__item.is-active').forEach(item => {\n // let content = item.querySelector('.accordion__content');\n\n // TweenLite.to(content, 0.6, {\n // ease: Circ.easeOut,\n // height: 0,\n // });\n // item.classList.remove('is-active');\n // });\n\n // if (!isActive) {\n // TweenLite.to(content, 0.6, {\n // ease: Circ.easeOut,\n // height: content.getAttribute('data-height'),\n // });\n // item.classList.add('is-active');\n // }\n // }\n // });\n // }\n\n constructor(component) { \n $(component).find('.accordion__item').each(function() {\n let $item = $(this);\n\n $(this).find('.js-accordion__toggle').on('click', function() {\n // Collapse active siblings and set to inactive\n $(component).find('.accordion__item.is-active').not($item).each(function() {\n $(this).find('.accordion__content').slideToggle();\n $(this).removeClass('is-active');\n });\n\n $item.find('.accordion__content').slideToggle();\n $item.toggleClass('is-active');\n });\n });\n }\n}\n\nexport default Accordion;\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/accordion.js","// import { debounce, throttle } from '../utilities';\n\nclass Gallery {\n constructor(component) {\n this.component = component;\n this.max = component.dataset.max;\n this.visible = \"\";\n this.imageElement = component.querySelector('.gallery__image');\n this.extra = 0;\n this.columns;\n this.total = component.dataset.total;\n\n this.setLayout();\n // @TODO: Check performance\n window.addEventListener('resize', e => {\n this.setLayout();\n });\n // window.addEventListener('resize', debounce((e) => {\n // this.setLayout();\n // }, 100));\n }\n\n setLayout() {\n /*this.updateColumns();\n\n switch(this.columns) {\n case 2:\n this.visible = 6;\n break;\n default:\n this.visible = this.columns * 2;\n }\n\n this.component.dataset.visible = this.visible; */\n\n this.setExtra();\n }\n\n setExtra() {\n this.extra = this.total - this.max;\n\n if (this.extra > 0) {\n this.component.querySelector('.gallery__more').classList.remove('u-hidden');\n } else {\n this.component.querySelector('.gallery__more').classList.add('u-hidden');\n }\n\n this.component.querySelector('.gallery__extra').innerHTML = this.extra + '+';\n }\n\n updateColumns() {\n this.columns = parseInt(window.getComputedStyle(this.imageElement).getPropertyValue('--columns'));\n }\n}\n\nexport default Gallery;\n\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/gallery.js","import Swiper from 'swiper';\n\nclass Slider {\n constructor(component) {\n this.params = {\n direction: 'horizontal',\n loop: component.dataset.loop,\n slidesPerView: (component.dataset.preview ? 'auto' : component.dataset.visibleSlides),\n speed: 600,\n paginationClickable: true,\n spaceBetween: 24,\n breakpoints: {\n 1199: {\n spaceBetween: 16,\n },\n },\n };\n\n if (component.dataset.preview) {\n this.params.breakpoints = {\n 1199: {\n centeredSlides: true,\n },\n }\n }\n\n if (component.dataset.pagination) {\n this.params.pagination = {\n // @TODO: Update to use BEM\n el: component.querySelector('.slider__pagination'),\n clickable: true,\n bulletClass: 'slider__bullet',\n bulletActiveClass: 'is-active',\n };\n }\n\n if (component.dataset.autoplay) {\n this.params.autoplay = component.dataset.autoplay;\n }\n\n if (component.dataset.navigation) {\n this.params.navigation = {\n nextEl: component.querySelector('.slider__navigation--next'),\n prevEl: component.querySelector('.slider__navigation--previous'),\n }\n }\n\n if (component.dataset.visibleSlides > 1 && !component.dataset.preview) {\n this.params.breakpoints = {\n 599: {\n slidesPerView: 1,\n },\n };\n\n if (component.dataset.visibleSlides > 2) {\n this.params.breakpoints['899'] = {\n slidesPerView: 2,\n };\n }\n\n if (component.dataset.visibleSlides > 3) {\n this.params.breakpoints['1199'] = {\n slidesPerView: 3,\n };\n }\n }\n\n this.swiper = new Swiper(component.querySelectorAll('.swiper-container'), this.params);\n }\n}\n\nexport default Slider;\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/slider.js","/**\n * Dom7 2.0.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2018, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 21, 2018\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n if (this[0]) {\n if (this[0].multiple && this[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < this[0].selectedOptions.length; i += 1) {\n values.push(this[0].selectedOptions[i].value);\n }\n return values;\n }\n return this[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].value = value;\n }\n return this;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n eventData.unshift(e);\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n eventData.unshift(e);\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n if (!el.dom7Listeners) el.dom7Listeners = [];\n el.dom7Listeners.push({\n type: eventType,\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(events[j], handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n if (!el.dom7LiveListeners) el.dom7LiveListeners = [];\n el.dom7LiveListeners.push({\n type: eventType,\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(events[j], handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n if (!targetSelector) {\n if (el.dom7Listeners) {\n for (let k = 0; k < el.dom7Listeners.length; k += 1) {\n if (listener) {\n if (el.dom7Listeners[k].listener === listener) {\n el.removeEventListener(events[i], el.dom7Listeners[k].proxyListener, capture);\n }\n } else if (el.dom7Listeners[k].type === events[i]) {\n el.removeEventListener(events[i], el.dom7Listeners[k].proxyListener, capture);\n }\n }\n }\n } else if (el.dom7LiveListeners) {\n for (let k = 0; k < el.dom7LiveListeners.length; k += 1) {\n if (listener) {\n if (el.dom7LiveListeners[k].listener === listener) {\n el.removeEventListener(events[i], el.dom7LiveListeners[k].proxyListener, capture);\n }\n } else if (el.dom7LiveListeners[k].type === events[i]) {\n el.removeEventListener(events[i], el.dom7LiveListeners[k].proxyListener, capture);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function proxy(e) {\n const eventData = e.target.dom7EventData || [];\n listener.apply(this, eventData);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n return dom.on(eventName, targetSelector, proxy, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n let evt;\n try {\n evt = new window.CustomEvent(events[i], {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(events[i], true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n this[j].dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n this[j].dispatchEvent(evt);\n this[j].dom7EventData = [];\n delete this[j].dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n // eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n // eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n\n\n\n// WEBPACK FOOTER //\n// node_modules/dom7/dist/dom7.modular.js","import Swiper from 'swiper';\n\nclass HeroSlider {\n constructor(component) {\n this.params = {\n direction: 'horizontal',\n loop: true,\n slidesPerView: 1,\n speed: 600,\n paginationClickable: true,\n autoplay: false,\n pagination: {\n el: '.hero .slider__pagination',\n type: 'bullets',\n bulletClass: 'slider__bullet',\n bulletActiveClass: 'is-active',\n clickable: 'true',\n },\n navigation: {\n nextEl: '.hero .slider__navigation--next',\n prevEl: '.hero .slider__navigation--previous',\n },\n };\n\n this.swiper = new Swiper(component.querySelectorAll('.hero .swiper-container'), this.params);\n }\n}\n\n\nexport default HeroSlider;\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/hero-slider.js","import Swiper from 'swiper';\n\nclass FeaturedBlockSlider {\n constructor(component) {\n this.params = {\n direction: 'horizontal',\n //loop: true,\n slidesPerView: 'auto',\n speed: 600,\n paginationClickable: true,\n autoplay: false,\n pagination: {\n el: '.featured-blocks-slider-pagination',\n type: 'bullets',\n bulletClass: 'slider__bullet',\n bulletActiveClass: 'is-active',\n clickable: 'true',\n },\n breakpoints: {\n 599: {\n slidesPerView: 1,\n },\n },\n };\n\n this.swiper = new Swiper(component.querySelectorAll('.featured-blocks-swiper-container'), this.params);\n }\n}\n\n\nexport default FeaturedBlockSlider;\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/featured-blocks-slider.js","// @TODO: Remove jQuery\nclass Flyout {\n constructor(flyout, params) {\n this.overlay = $('.overlay-show');\n this.showClass = 'show';\n this.html = $(\"html\");\n this.flyout = false;\n this.state = 'closed';\n this.errMessage = \"You have to init the flyout first! [ Flyout.init() ]\";\n this.updateContent = false;\n this.trigger = false;\n\n if (flyout) {\n if (window.Flyouts === undefined) {\n window.Flyouts = [this.init(flyout, params)];\n } else {\n window.Flyouts.push(this.init(flyout, params));\n }\n\n // Attach flyout to element\n $(flyout).data('flyout', this);\n }\n }\n\n init(e, params) {\n this.parseParams(params);\n this.flyout = this._flyoutClass(e);\n\n this.flyout.find('.flyout__close').on('click', () => {\n this.close();\n });\n\n this.overlay.on('click', () => {\n this.close();\n });\n\n $(document).keyup((e) => {\n if (e.keyCode === 27 && this.isOpen()) {\n this.close();\n }\n });\n\n return this;\n }\n\n parseParams(params) {\n if (!params) {\n return;\n }\n\n let trigger;\n\n if (params.trigger) {\n this.triggerInit(params.trigger);\n }\n\n if (params.triggerData) {\n trigger = '[data-flyout=' + params.triggerData +']';\n this.triggerInit(trigger);\n }\n\n if (params.triggerHash) {\n trigger = 'a[href*=\"#' + params.triggerHash +'\"]';\n this.triggerInit(trigger);\n }\n\n if (params.updateContent) {\n this.updateContent = params.updateContent;\n }\n }\n\n triggerInit(selector) {\n let that = this;\n let triggers = $(selector);\n\n this.trigger = triggers;\n\n triggers.each(function() {\n let trigger = $(this);\n\n trigger.on('click', function(e) {\n e.preventDefault();\n\n if (that.updateContent) {\n let contentElement = trigger.data('content');\n let contentDataElement = trigger.find('[data-content]');\n\n if (contentElement && $(contentElement).length > 0) {\n that.replaceContent($(contentElement).html());\n } else if (contentDataElement) {\n that.replaceContent(contentDataElement.html());\n }\n }\n\n that.toggle();\n });\n });\n }\n\n open() {\n // Figure out if a click event was sent to it with a data attribute\n if (typeof(this.flyout) === 'object') {\n this.flyout.scrollTop(0);\n this.flyout.addClass(this.showClass);\n this.showOverlay();\n this.state = 'open';\n this.toggleHamburger();\n }\n\n return this.flyout;\n }\n\n close() {\n if (typeof(this.flyout) === 'object') {\n this.flyout.removeClass(this.showClass);\n this.closeOverlay();\n this.state = 'closed';\n this.toggleHamburger();\n }\n\n return this.flyout;\n }\n\n toggle() {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n replaceContent(content) {\n if (typeof(this.flyout) === 'object') {\n this.flyout.find('[data-content-replace]').html(content);\n }\n\n return this.flyout;\n }\n\n showOverlay() {\n let overlay = this.overlay;\n overlay.addClass(this.showClass);\n this.html.addClass('u-lock overlay-visible');\n }\n\n toggleHamburger() {\n if (this.isOpen()) {\n this.flyout.find('.hamburger').addClass('is-active');\n\n if (this.trigger) {\n this.trigger.addClass('is-active');\n }\n } else {\n this.flyout.find('.hamburger').removeClass('is-active');\n\n if (this.trigger) {\n this.trigger.removeClass('is-active');\n }\n }\n }\n\n closeOverlay() {\n let overlay = this.overlay;\n\n if ($(\".flyout\").hasClass(this.showClass) === false) {\n overlay.removeClass(this.showClass);\n this.html.removeClass('u-lock overlay-visible');\n }\n }\n\n isOpen() {\n return (this.state === 'open');\n }\n\n isClosed() {\n return (this.state === 'closed');\n }\n\n _flyoutClass(e) {\n let flyout;\n\n if (typeof(e) === 'object'){\n let that = e;\n flyout = that.data('flyout') || '.flyout-1';\n } else if (typeof(e) === 'string') {\n flyout = e;\n } else {\n flyout = '.flyout-1';\n }\n\n flyout = $(flyout);\n\n return flyout;\n }\n}\n\nexport default Flyout;\n\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/flyout.js","import { debounce } from '../utilities';\n\nclass StickyHeader {\n constructor(header) {\n // @TODO: Refactor to target parent div as header and select inner div for target\n this.header = $(header);\n this.lastScrollTop = 0;\n this.scrollVar = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n this.ticking = false;\n this.updateHeight();\n\n $(window).scroll(() => {\n this.requestTick();\n });\n\n window.addEventListener('resize', debounce((e) => {\n this.updateHeight();\n }, 100));\n\n this.requestTick();\n }\n\n updateHeight() {\n this.height = this.header.outerHeight();\n this.header.parent().css('height', this.height);\n }\n\n hasScrolled() {\n var body = $('body');\n\n // Gotta scroll more doe\n if ((this.lastScrollTop - this.scrollVar) >= -25 && (this.lastScrollTop - this.scrollVar) < 0) {\n return;\n }\n\n // Control header floating\n if (this.scrollVar > this.height + 25) {\n\n if (body.hasClass('sticky-header')) {\n // Control showing / hiding\n if (this.scrollVar > this.lastScrollTop) {\n this.header.removeClass('is-down').addClass('is-up');\n } else if (this.scrollVar < this.lastScrollTop) {\n if (this.scrollVar + $(window).height() < $(document).height()) {\n this.header.removeClass('is-up').addClass('is-down');\n }\n }\n } else {\n body.addClass('sticky-header');\n }\n } else if (!this.header.hasClass('is-down')) {\n body.removeClass('sticky-header');\n } else if (this.scrollVar <= 5) {\n body.removeClass('sticky-header');\n this.header.removeClass('is-down is-up');\n }\n\n this.lastScrollTop = this.scrollVar;\n }\n\n stick() {\n this.ticking = false;\n this.scrollVar = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n this.hasScrolled();\n }\n\n requestTick() {\n if (!this.ticking) {\n window.requestAnimationFrame(this.stick.bind(this));\n }\n\n this.ticking = true;\n }\n}\n\nexport default StickyHeader;\n\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/sticky-header.js","const debounce = (fn, time) => {\n let timeout;\n\n return function() {\n const functionCall = () => fn.apply(this, arguments);\n\n clearTimeout(timeout);\n timeout = setTimeout(functionCall, time);\n }\n}\n\nconst throttle = (fn, time) => {\n let timeout = null;\n\n return function() {\n const functionCall = () => {\n fn.apply(this, arguments);\n timeout = null;\n };\n\n if (!timeout) {\n timeout = setTimeout(functionCall, time)\n }\n }\n}\n\nexport { debounce, throttle }\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/utilities.js","var onEndAnimation = function(el, callback) {\n var onEndCallbackFn = function( ev ) {\n if (ev.target !== this) {\n return;\n }\n\n this.removeEventListener('animationend', onEndCallbackFn);\n if (callback && typeof callback === 'function') { callback.call(); }\n };\n\n el.addEventListener('animationend', onEndCallbackFn);\n};\n\nfunction extend(a, b) {\n for (var key in b) {\n if (b.hasOwnProperty(key)) {\n a[key] = b[key];\n }\n }\n return a;\n}\n\nclass MobileNav {\n constructor(el, options) {\n this.el = el;\n this.options = {\n // show breadcrumbs\n breadcrumbsCtrl : true,\n // initial breadcrumb text\n initialBreadcrumb : 'all',\n // show back button\n backCtrl : true,\n // delay between each menu item sliding animation\n itemsDelayInterval : 60,\n // direction\n direction : 'r2l',\n // callback: item that doesn´t have a submenu gets clicked\n // onItemClick([event], [inner HTML of the clicked item])\n onItemClick : function(ev, itemName) { return false; },\n };\n\n extend( this.options, options );\n\n // the menus (
    ´s)\n this.menus = [].slice.call(this.el.querySelectorAll('.menu__level'));\n // index of current menu\n this.current = 0;\n\n this._init();\n }\n\n _init() {\n // iterate the existing menus and create an array of menus, more specifically an array of objects where each one holds the info of each menu element and its menu items\n this.menusArr = [];\n this.menus.forEach((menuEl, pos) => {\n var menu = {menuEl : menuEl, menuItems : [].slice.call(menuEl.querySelectorAll('.menu__item'))};\n this.menusArr.push(menu);\n\n // set current menu class\n if (pos === this.current) {\n menuEl.classList.add('menu__level--current');\n }\n });\n\n // create back button\n if (this.options.backCtrl) {\n this.backCtrl = this.el.querySelector('.menu__back');\n // this.backCtrl = document.createElement('button');\n // this.backCtrl.className = 'menu__back is-hidden';\n // this.backCtrl.setAttribute('aria-label', 'Go back');\n // this.backCtrl.innerHTML = 'Back';\n // this.el.insertBefore(this.backCtrl, this.el.firstChild);\n }\n\n\n // create breadcrumbs\n if (this.options.breadcrumbsCtrl) {\n this.breadcrumbsCtrl = document.createElement('nav');\n this.breadcrumbsCtrl.className = 'menu__breadcrumbs';\n this.el.insertBefore(this.breadcrumbsCtrl, this.el.firstChild);\n // add initial breadcrumb\n this._addBreadcrumb(0);\n }\n\n // event binding\n this._initEvents();\n }\n\n _initEvents() {\n for (var i = 0, len = this.menusArr.length; i < len; ++i) {\n this.menusArr[i].menuItems.forEach((item, pos) => {\n item.querySelector('a').addEventListener('click', (ev) => {\n var submenu = ev.target.getAttribute('data-submenu'),\n itemName = ev.target.innerHTML,\n subMenuEl = this.el.querySelector('ul[data-menu=\"' + submenu + '\"]');\n\n // check if there's a sub menu for this item\n if (submenu && subMenuEl) {\n ev.preventDefault();\n // open it\n this._openSubMenu(subMenuEl, pos, itemName);\n } else {\n // add class current\n var currentlink = this.el.querySelector('.menu__link--current');\n if (currentlink) {\n this.el.querySelector('.menu__link--current').classList.remove('menu__link--current');\n }\n ev.target.classList.add('menu__link--current');\n\n // callback\n this.options.onItemClick(ev, itemName);\n }\n });\n });\n }\n\n // back navigation\n if (this.options.backCtrl) {\n this.backCtrl.addEventListener('click', () => {\n this._back();\n });\n }\n }\n\n _openSubMenu(subMenuEl, clickPosition, subMenuName) {\n if (this.isAnimating) {\n return false;\n }\n this.isAnimating = true;\n\n // save \"parent\" menu index for back navigation\n this.menusArr[this.menus.indexOf(subMenuEl)].backIdx = this.current;\n // save \"parent\" menu´s name\n this.menusArr[this.menus.indexOf(subMenuEl)].name = subMenuName;\n // current menu slides out\n this._menuOut(clickPosition);\n // next menu (submenu) slides in\n this._menuIn(subMenuEl, clickPosition);\n }\n\n _back() {\n if (this.isAnimating) {\n return false;\n }\n this.isAnimating = true;\n\n // current menu slides out\n this._menuOut();\n // next menu (previous menu) slides in\n var backMenu = this.menusArr[this.menusArr[this.current].backIdx].menuEl;\n this._menuIn(backMenu);\n\n // remove last breadcrumb\n if (this.options.breadcrumbsCtrl) {\n this.breadcrumbsCtrl.removeChild(this.breadcrumbsCtrl.lastElementChild);\n }\n }\n\n _menuOut(clickPosition) {\n // the current menu\n var currentMenu = this.menusArr[this.current].menuEl,\n isBackNavigation = typeof clickPosition === 'undefined' ? true : false;\n\n // slide out current menu items - first, set the delays for the items\n this.menusArr[this.current].menuItems.forEach((item, pos) => {\n item.style.WebkitAnimationDelay = item.style.animationDelay = isBackNavigation ? parseInt(pos * this.options.itemsDelayInterval) + 'ms' : parseInt(Math.abs(clickPosition - pos) * this.options.itemsDelayInterval) + 'ms';\n });\n // animation class\n if (this.options.direction === 'r2l') {\n currentMenu.classList.add(!isBackNavigation ? 'animate-outToLeft' : 'animate-outToRight');\n } else {\n currentMenu.classList.add(isBackNavigation ? 'animate-outToLeft' : 'animate-outToRight');\n }\n }\n\n _menuIn(nextMenuEl, clickPosition) {\n var currentMenu = this.menusArr[this.current].menuEl,\n isBackNavigation = typeof clickPosition === 'undefined' ? true : false,\n // index of the nextMenuEl\n nextMenuIdx = this.menus.indexOf(nextMenuEl),\n\n nextMenuItems = this.menusArr[nextMenuIdx].menuItems,\n nextMenuItemsTotal = nextMenuItems.length;\n\n // slide in next menu items - first, set the delays for the items\n nextMenuItems.forEach((item, pos) => {\n item.style.WebkitAnimationDelay = item.style.animationDelay = isBackNavigation ? parseInt(pos * this.options.itemsDelayInterval) + 'ms' : parseInt(Math.abs(clickPosition - pos) * this.options.itemsDelayInterval) + 'ms';\n\n // we need to reset the classes once the last item animates in\n // the \"last item\" is the farthest from the clicked item\n // let's calculate the index of the farthest item\n var farthestIdx = clickPosition <= nextMenuItemsTotal/2 || isBackNavigation ? nextMenuItemsTotal - 1 : 0;\n\n if (pos === farthestIdx) {\n onEndAnimation(item, () => {\n // reset classes\n if (this.options.direction === 'r2l') {\n currentMenu.classList.remove(!isBackNavigation ? 'animate-outToLeft' : 'animate-outToRight');\n nextMenuEl.classList.remove(!isBackNavigation ? 'animate-inFromRight' : 'animate-inFromLeft');\n } else {\n currentMenu.classList.remove(isBackNavigation ? 'animate-outToLeft' : 'animate-outToRight');\n nextMenuEl.classList.remove(isBackNavigation ? 'animate-inFromRight' : 'animate-inFromLeft');\n }\n currentMenu.classList.remove('menu__level--current');\n nextMenuEl.classList.add('menu__level--current');\n\n //reset current\n this.current = nextMenuIdx;\n\n // control back button and breadcrumbs navigation elements\n if (!isBackNavigation) {\n // show back button\n if (this.options.backCtrl) {\n this.backCtrl.classList.remove('is-hidden');\n }\n\n // add breadcrumb\n this._addBreadcrumb(nextMenuIdx);\n } else if (this.current === 0 && this.options.backCtrl) {\n // hide back button\n this.backCtrl.classList.add('is-hidden');\n }\n\n // we can navigate again..\n\n setTimeout(function(){$('.not-visible').removeClass('not-visible');},250);\n this.isAnimating = false;\n });\n }\n });\n\n // animation class\n if (this.options.direction === 'r2l') {\n nextMenuEl.classList.add(!isBackNavigation ? 'animate-inFromRight' : 'animate-inFromLeft');\n } else {\n nextMenuEl.classList.add(isBackNavigation ? 'animate-inFromRight' : 'animate-inFromLeft');\n }\n }\n\n _addBreadcrumb(idx) {\n if (!this.options.breadcrumbsCtrl) {\n return false;\n }\n\n var bc = document.createElement('a');\n\n bc.className = 'breadcrumb-link not-visible';\n bc.innerHTML = idx ? this.menusArr[idx].name : this.options.initialBreadcrumb;\n this.breadcrumbsCtrl.appendChild(bc);\n\n bc.addEventListener('click', (ev) => {\n ev.preventDefault();\n\n // do nothing if this breadcrumb is the last one in the list of breadcrumbs\n if (!bc.nextSibling || this.isAnimating) {\n return false;\n }\n this.isAnimating = true;\n\n // current menu slides out\n this._menuOut();\n // next menu slides in\n var nextMenu = this.menusArr[idx].menuEl;\n this._menuIn(nextMenu);\n\n // remove breadcrumbs that are ahead\n var siblingNode;\n while ((siblingNode = bc.nextSibling) !== null) {\n this.breadcrumbsCtrl.removeChild(siblingNode);\n }\n });\n }\n}\n\nexport default MobileNav;\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/components/nav.js","import ScrollMagic from 'scrollmagic';\n\n// @TODO: Refactor to vanilla JS\n// @TODO: Change target from selector to dom object\nclass Magic {\n constructor(target, childSelector = false) {\n this.target = target;\n this.childSelector = childSelector;\n\n if (!childSelector) {\n this.makeMagic();\n } else {\n this.makeMagicBox();\n }\n }\n\n makeMagic() {\n var magicController = new ScrollMagic.Controller();\n $(this.target).addClass('is-magic');\n \n $(this.target).not('.is-latent').each(function() {\n var that = this;\n \n var scene = new ScrollMagic.Scene({\n triggerElement: that,\n triggerHook: 0.95,\n })\n .setClassToggle(that, 'is-loaded')\n .addTo(magicController);\n });\n }\n\n makeMagicBox() {\n $(this.target).each(function() {\n var box = this;\n \n $(this).find(childSelector).each(function(index) {\n this.addClass('is-magic').addClass('delay--' + index);\n var that = this;\n \n var scene = new ScrollMagic.Scene({\n triggerElement: box,\n triggerHook: 0.95,\n })\n .setClassToggle(that, 'is-loaded')\n .addTo(magicController);\n });\n });\n }\n}\n\nexport default Magic;\n\n\n// WEBPACK FOOTER //\n// resources/assets/scripts/leap/tools/magic.js","/*!\n * ScrollMagic v2.0.5 (2015-04-29)\n * The javascript library for magical scroll interactions.\n * (c) 2015 Jan Paepke (@janpaepke)\n * Project Website: http://scrollmagic.io\n * \n * @version 2.0.5\n * @license Dual licensed under MIT license and GPL.\n * @author Jan Paepke - e-mail@janpaepke.de\n *\n * @file ScrollMagic main library.\n */\n/**\n * @namespace ScrollMagic\n */\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine(factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser global\n\t\troot.ScrollMagic = factory();\n\t}\n}(this, function () {\n\t\"use strict\";\n\n\tvar ScrollMagic = function () {\n\t\t_util.log(2, '(COMPATIBILITY NOTICE) -> As of ScrollMagic 2.0.0 you need to use \\'new ScrollMagic.Controller()\\' to create a new controller instance. Use \\'new ScrollMagic.Scene()\\' to instance a scene.');\n\t};\n\n\tScrollMagic.version = \"2.0.5\";\n\n\t// TODO: temporary workaround for chrome's scroll jitter bug\n\twindow.addEventListener(\"mousewheel\", function () {});\n\n\t// global const\n\tvar PIN_SPACER_ATTRIBUTE = \"data-scrollmagic-pin-spacer\";\n\n\t/**\n\t * The main class that is needed once per scroll container.\n\t *\n\t * @class\n\t *\n\t * @example\n\t * // basic initialization\n\t * var controller = new ScrollMagic.Controller();\n\t *\n\t * // passing options\n\t * var controller = new ScrollMagic.Controller({container: \"#myContainer\", loglevel: 3});\n\t *\n\t * @param {object} [options] - An object containing one or more options for the controller.\n\t * @param {(string|object)} [options.container=window] - A selector, DOM object that references the main container for scrolling.\n\t * @param {boolean} [options.vertical=true] - Sets the scroll mode to vertical (`true`) or horizontal (`false`) scrolling.\n\t * @param {object} [options.globalSceneOptions={}] - These options will be passed to every Scene that is added to the controller using the addScene method. For more information on Scene options see {@link ScrollMagic.Scene}.\n\t * @param {number} [options.loglevel=2] Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.\n\t ** `0` => silent\n\t ** `1` => errors\n\t ** `2` => errors, warnings\n\t ** `3` => errors, warnings, debuginfo\n\t * @param {boolean} [options.refreshInterval=100] - Some changes don't call events by default, like changing the container size or moving a scene trigger element. \n\t This interval polls these parameters to fire the necessary events. \n\t If you don't use custom containers, trigger elements or have static layouts, where the positions of the trigger elements don't change, you can set this to 0 disable interval checking and improve performance.\n\t *\n\t */\n\tScrollMagic.Controller = function (options) {\n/*\n\t * ----------------------------------------------------------------\n\t * settings\n\t * ----------------------------------------------------------------\n\t */\n\t\tvar\n\t\tNAMESPACE = 'ScrollMagic.Controller',\n\t\t\tSCROLL_DIRECTION_FORWARD = 'FORWARD',\n\t\t\tSCROLL_DIRECTION_REVERSE = 'REVERSE',\n\t\t\tSCROLL_DIRECTION_PAUSED = 'PAUSED',\n\t\t\tDEFAULT_OPTIONS = CONTROLLER_OPTIONS.defaults;\n\n/*\n\t * ----------------------------------------------------------------\n\t * private vars\n\t * ----------------------------------------------------------------\n\t */\n\t\tvar\n\t\tController = this,\n\t\t\t_options = _util.extend({}, DEFAULT_OPTIONS, options),\n\t\t\t_sceneObjects = [],\n\t\t\t_updateScenesOnNextCycle = false,\n\t\t\t// can be boolean (true => all scenes) or an array of scenes to be updated\n\t\t\t_scrollPos = 0,\n\t\t\t_scrollDirection = SCROLL_DIRECTION_PAUSED,\n\t\t\t_isDocument = true,\n\t\t\t_viewPortSize = 0,\n\t\t\t_enabled = true,\n\t\t\t_updateTimeout, _refreshTimeout;\n\n/*\n\t * ----------------------------------------------------------------\n\t * private functions\n\t * ----------------------------------------------------------------\n\t */\n\n\t\t/**\n\t\t * Internal constructor function of the ScrollMagic Controller\n\t\t * @private\n\t\t */\n\t\tvar construct = function () {\n\t\t\tfor (var key in _options) {\n\t\t\t\tif (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\n\t\t\t\t\tlog(2, \"WARNING: Unknown option \\\"\" + key + \"\\\"\");\n\t\t\t\t\tdelete _options[key];\n\t\t\t\t}\n\t\t\t}\n\t\t\t_options.container = _util.get.elements(_options.container)[0];\n\t\t\t// check ScrollContainer\n\t\t\tif (!_options.container) {\n\t\t\t\tlog(1, \"ERROR creating object \" + NAMESPACE + \": No valid scroll container supplied\");\n\t\t\t\tthrow NAMESPACE + \" init failed.\"; // cancel\n\t\t\t}\n\t\t\t_isDocument = _options.container === window || _options.container === document.body || !document.body.contains(_options.container);\n\t\t\t// normalize to window\n\t\t\tif (_isDocument) {\n\t\t\t\t_options.container = window;\n\t\t\t}\n\t\t\t// update container size immediately\n\t\t\t_viewPortSize = getViewportSize();\n\t\t\t// set event handlers\n\t\t\t_options.container.addEventListener(\"resize\", onChange);\n\t\t\t_options.container.addEventListener(\"scroll\", onChange);\n\n\t\t\t_options.refreshInterval = parseInt(_options.refreshInterval) || DEFAULT_OPTIONS.refreshInterval;\n\t\t\tscheduleRefresh();\n\n\t\t\tlog(3, \"added new \" + NAMESPACE + \" controller (v\" + ScrollMagic.version + \")\");\n\t\t};\n\n\t\t/**\n\t\t * Schedule the next execution of the refresh function\n\t\t * @private\n\t\t */\n\t\tvar scheduleRefresh = function () {\n\t\t\tif (_options.refreshInterval > 0) {\n\t\t\t\t_refreshTimeout = window.setTimeout(refresh, _options.refreshInterval);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Default function to get scroll pos - overwriteable using `Controller.scrollPos(newFunction)`\n\t\t * @private\n\t\t */\n\t\tvar getScrollPos = function () {\n\t\t\treturn _options.vertical ? _util.get.scrollTop(_options.container) : _util.get.scrollLeft(_options.container);\n\t\t};\n\n\t\t/**\n\t\t * Returns the current viewport Size (width vor horizontal, height for vertical)\n\t\t * @private\n\t\t */\n\t\tvar getViewportSize = function () {\n\t\t\treturn _options.vertical ? _util.get.height(_options.container) : _util.get.width(_options.container);\n\t\t};\n\n\t\t/**\n\t\t * Default function to set scroll pos - overwriteable using `Controller.scrollTo(newFunction)`\n\t\t * Make available publicly for pinned mousewheel workaround.\n\t\t * @private\n\t\t */\n\t\tvar setScrollPos = this._setScrollPos = function (pos) {\n\t\t\tif (_options.vertical) {\n\t\t\t\tif (_isDocument) {\n\t\t\t\t\twindow.scrollTo(_util.get.scrollLeft(), pos);\n\t\t\t\t} else {\n\t\t\t\t\t_options.container.scrollTop = pos;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (_isDocument) {\n\t\t\t\t\twindow.scrollTo(pos, _util.get.scrollTop());\n\t\t\t\t} else {\n\t\t\t\t\t_options.container.scrollLeft = pos;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Handle updates in cycles instead of on scroll (performance)\n\t\t * @private\n\t\t */\n\t\tvar updateScenes = function () {\n\t\t\tif (_enabled && _updateScenesOnNextCycle) {\n\t\t\t\t// determine scenes to update\n\t\t\t\tvar scenesToUpdate = _util.type.Array(_updateScenesOnNextCycle) ? _updateScenesOnNextCycle : _sceneObjects.slice(0);\n\t\t\t\t// reset scenes\n\t\t\t\t_updateScenesOnNextCycle = false;\n\t\t\t\tvar oldScrollPos = _scrollPos;\n\t\t\t\t// update scroll pos now instead of onChange, as it might have changed since scheduling (i.e. in-browser smooth scroll)\n\t\t\t\t_scrollPos = Controller.scrollPos();\n\t\t\t\tvar deltaScroll = _scrollPos - oldScrollPos;\n\t\t\t\tif (deltaScroll !== 0) { // scroll position changed?\n\t\t\t\t\t_scrollDirection = (deltaScroll > 0) ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_REVERSE;\n\t\t\t\t}\n\t\t\t\t// reverse order of scenes if scrolling reverse\n\t\t\t\tif (_scrollDirection === SCROLL_DIRECTION_REVERSE) {\n\t\t\t\t\tscenesToUpdate.reverse();\n\t\t\t\t}\n\t\t\t\t// update scenes\n\t\t\t\tscenesToUpdate.forEach(function (scene, index) {\n\t\t\t\t\tlog(3, \"updating Scene \" + (index + 1) + \"/\" + scenesToUpdate.length + \" (\" + _sceneObjects.length + \" total)\");\n\t\t\t\t\tscene.update(true);\n\t\t\t\t});\n\t\t\t\tif (scenesToUpdate.length === 0 && _options.loglevel >= 3) {\n\t\t\t\t\tlog(3, \"updating 0 Scenes (nothing added to controller)\");\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Initializes rAF callback\n\t\t * @private\n\t\t */\n\t\tvar debounceUpdate = function () {\n\t\t\t_updateTimeout = _util.rAF(updateScenes);\n\t\t};\n\n\t\t/**\n\t\t * Handles Container changes\n\t\t * @private\n\t\t */\n\t\tvar onChange = function (e) {\n\t\t\tlog(3, \"event fired causing an update:\", e.type);\n\t\t\tif (e.type == \"resize\") {\n\t\t\t\t// resize\n\t\t\t\t_viewPortSize = getViewportSize();\n\t\t\t\t_scrollDirection = SCROLL_DIRECTION_PAUSED;\n\t\t\t}\n\t\t\t// schedule update\n\t\t\tif (_updateScenesOnNextCycle !== true) {\n\t\t\t\t_updateScenesOnNextCycle = true;\n\t\t\t\tdebounceUpdate();\n\t\t\t}\n\t\t};\n\n\t\tvar refresh = function () {\n\t\t\tif (!_isDocument) {\n\t\t\t\t// simulate resize event. Only works for viewport relevant param (performance)\n\t\t\t\tif (_viewPortSize != getViewportSize()) {\n\t\t\t\t\tvar resizeEvent;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresizeEvent = new Event('resize', {\n\t\t\t\t\t\t\tbubbles: false,\n\t\t\t\t\t\t\tcancelable: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) { // stupid IE\n\t\t\t\t\t\tresizeEvent = document.createEvent(\"Event\");\n\t\t\t\t\t\tresizeEvent.initEvent(\"resize\", false, false);\n\t\t\t\t\t}\n\t\t\t\t\t_options.container.dispatchEvent(resizeEvent);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_sceneObjects.forEach(function (scene, index) { // refresh all scenes\n\t\t\t\tscene.refresh();\n\t\t\t});\n\t\t\tscheduleRefresh();\n\t\t};\n\n\t\t/**\n\t\t * Send a debug message to the console.\n\t\t * provided publicly with _log for plugins\n\t\t * @private\n\t\t *\n\t\t * @param {number} loglevel - The loglevel required to initiate output for the message.\n\t\t * @param {...mixed} output - One or more variables that should be passed to the console.\n\t\t */\n\t\tvar log = this._log = function (loglevel, output) {\n\t\t\tif (_options.loglevel >= loglevel) {\n\t\t\t\tArray.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \") ->\");\n\t\t\t\t_util.log.apply(window, arguments);\n\t\t\t}\n\t\t};\n\t\t// for scenes we have getters for each option, but for the controller we don't, so we need to make it available externally for plugins\n\t\tthis._options = _options;\n\n\t\t/**\n\t\t * Sort scenes in ascending order of their start offset.\n\t\t * @private\n\t\t *\n\t\t * @param {array} ScenesArray - an array of ScrollMagic Scenes that should be sorted\n\t\t * @return {array} The sorted array of Scenes.\n\t\t */\n\t\tvar sortScenes = function (ScenesArray) {\n\t\t\tif (ScenesArray.length <= 1) {\n\t\t\t\treturn ScenesArray;\n\t\t\t} else {\n\t\t\t\tvar scenes = ScenesArray.slice(0);\n\t\t\t\tscenes.sort(function (a, b) {\n\t\t\t\t\treturn a.scrollOffset() > b.scrollOffset() ? 1 : -1;\n\t\t\t\t});\n\t\t\t\treturn scenes;\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * ----------------------------------------------------------------\n\t\t * public functions\n\t\t * ----------------------------------------------------------------\n\t\t */\n\n\t\t/**\n\t\t * Add one ore more scene(s) to the controller. \n\t\t * This is the equivalent to `Scene.addTo(controller)`.\n\t\t * @public\n\t\t * @example\n\t\t * // with a previously defined scene\n\t\t * controller.addScene(scene);\n\t\t *\n\t\t * // with a newly created scene.\n\t\t * controller.addScene(new ScrollMagic.Scene({duration : 0}));\n\t\t *\n\t\t * // adding multiple scenes\n\t\t * controller.addScene([scene, scene2, new ScrollMagic.Scene({duration : 0})]);\n\t\t *\n\t\t * @param {(ScrollMagic.Scene|array)} newScene - ScrollMagic Scene or Array of Scenes to be added to the controller.\n\t\t * @return {Controller} Parent object for chaining.\n\t\t */\n\t\tthis.addScene = function (newScene) {\n\t\t\tif (_util.type.Array(newScene)) {\n\t\t\t\tnewScene.forEach(function (scene, index) {\n\t\t\t\t\tController.addScene(scene);\n\t\t\t\t});\n\t\t\t} else if (newScene instanceof ScrollMagic.Scene) {\n\t\t\t\tif (newScene.controller() !== Controller) {\n\t\t\t\t\tnewScene.addTo(Controller);\n\t\t\t\t} else if (_sceneObjects.indexOf(newScene) < 0) {\n\t\t\t\t\t// new scene\n\t\t\t\t\t_sceneObjects.push(newScene); // add to array\n\t\t\t\t\t_sceneObjects = sortScenes(_sceneObjects); // sort\n\t\t\t\t\tnewScene.on(\"shift.controller_sort\", function () { // resort whenever scene moves\n\t\t\t\t\t\t_sceneObjects = sortScenes(_sceneObjects);\n\t\t\t\t\t});\n\t\t\t\t\t// insert Global defaults.\n\t\t\t\t\tfor (var key in _options.globalSceneOptions) {\n\t\t\t\t\t\tif (newScene[key]) {\n\t\t\t\t\t\t\tnewScene[key].call(newScene, _options.globalSceneOptions[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlog(3, \"adding Scene (now \" + _sceneObjects.length + \" total)\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlog(1, \"ERROR: invalid argument supplied for '.addScene()'\");\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * Remove one ore more scene(s) from the controller. \n\t\t * This is the equivalent to `Scene.remove()`.\n\t\t * @public\n\t\t * @example\n\t\t * // remove a scene from the controller\n\t\t * controller.removeScene(scene);\n\t\t *\n\t\t * // remove multiple scenes from the controller\n\t\t * controller.removeScene([scene, scene2, scene3]);\n\t\t *\n\t\t * @param {(ScrollMagic.Scene|array)} Scene - ScrollMagic Scene or Array of Scenes to be removed from the controller.\n\t\t * @returns {Controller} Parent object for chaining.\n\t\t */\n\t\tthis.removeScene = function (Scene) {\n\t\t\tif (_util.type.Array(Scene)) {\n\t\t\t\tScene.forEach(function (scene, index) {\n\t\t\t\t\tController.removeScene(scene);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvar index = _sceneObjects.indexOf(Scene);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tScene.off(\"shift.controller_sort\");\n\t\t\t\t\t_sceneObjects.splice(index, 1);\n\t\t\t\t\tlog(3, \"removing Scene (now \" + _sceneObjects.length + \" left)\");\n\t\t\t\t\tScene.remove();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * Update one ore more scene(s) according to the scroll position of the container. \n\t\t * This is the equivalent to `Scene.update()`. \n\t\t * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container. \n\t\t * It then updates the current scene state accordingly (or does nothing, if the state is already correct) – Pins will be set to their correct position and tweens will be updated to their correct progress. \n\t\t * _**Note:** This method gets called constantly whenever Controller detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._\n\t\t * @public\n\t\t * @example\n\t\t * // update a specific scene on next cycle\n\t\t * controller.updateScene(scene);\n\t\t *\n\t\t * // update a specific scene immediately\n\t\t * controller.updateScene(scene, true);\n\t\t *\n\t\t * // update multiple scenes scene on next cycle\n\t\t * controller.updateScene([scene1, scene2, scene3]);\n\t\t *\n\t\t * @param {ScrollMagic.Scene} Scene - ScrollMagic Scene or Array of Scenes that is/are supposed to be updated.\n\t\t * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle. \n\t\t This is useful when changing multiple properties of the scene - this way it will only be updated once all new properties are set (updateScenes).\n\t\t * @return {Controller} Parent object for chaining.\n\t\t */\n\t\tthis.updateScene = function (Scene, immediately) {\n\t\t\tif (_util.type.Array(Scene)) {\n\t\t\t\tScene.forEach(function (scene, index) {\n\t\t\t\t\tController.updateScene(scene, immediately);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (immediately) {\n\t\t\t\t\tScene.update(true);\n\t\t\t\t} else if (_updateScenesOnNextCycle !== true && Scene instanceof ScrollMagic.Scene) { // if _updateScenesOnNextCycle is true, all connected scenes are already scheduled for update\n\t\t\t\t\t// prep array for next update cycle\n\t\t\t\t\t_updateScenesOnNextCycle = _updateScenesOnNextCycle || [];\n\t\t\t\t\tif (_updateScenesOnNextCycle.indexOf(Scene) == -1) {\n\t\t\t\t\t\t_updateScenesOnNextCycle.push(Scene);\n\t\t\t\t\t}\n\t\t\t\t\t_updateScenesOnNextCycle = sortScenes(_updateScenesOnNextCycle); // sort\n\t\t\t\t\tdebounceUpdate();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * Updates the controller params and calls updateScene on every scene, that is attached to the controller. \n\t\t * See `Controller.updateScene()` for more information about what this means. \n\t\t * In most cases you will not need this function, as it is called constantly, whenever ScrollMagic detects a state change event, like resize or scroll. \n\t\t * The only application for this method is when ScrollMagic fails to detect these events. \n\t\t * One application is with some external scroll libraries (like iScroll) that move an internal container to a negative offset instead of actually scrolling. In this case the update on the controller needs to be called whenever the child container's position changes.\n\t\t * For this case there will also be the need to provide a custom function to calculate the correct scroll position. See `Controller.scrollPos()` for details.\n\t\t * @public\n\t\t * @example\n\t\t * // update the controller on next cycle (saves performance due to elimination of redundant updates)\n\t\t * controller.update();\n\t\t *\n\t\t * // update the controller immediately\n\t\t * controller.update(true);\n\t\t *\n\t\t * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance)\n\t\t * @return {Controller} Parent object for chaining.\n\t\t */\n\t\tthis.update = function (immediately) {\n\t\t\tonChange({\n\t\t\t\ttype: \"resize\"\n\t\t\t}); // will update size and set _updateScenesOnNextCycle to true\n\t\t\tif (immediately) {\n\t\t\t\tupdateScenes();\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * Scroll to a numeric scroll offset, a DOM element, the start of a scene or provide an alternate method for scrolling. \n\t\t * For vertical controllers it will change the top scroll offset and for horizontal applications it will change the left offset.\n\t\t * @public\n\t\t *\n\t\t * @since 1.1.0\n\t\t * @example\n\t\t * // scroll to an offset of 100\n\t\t * controller.scrollTo(100);\n\t\t *\n\t\t * // scroll to a DOM element\n\t\t * controller.scrollTo(\"#anchor\");\n\t\t *\n\t\t * // scroll to the beginning of a scene\n\t\t * var scene = new ScrollMagic.Scene({offset: 200});\n\t\t * controller.scrollTo(scene);\n\t\t *\n\t\t * // define a new scroll position modification function (jQuery animate instead of jump)\n\t\t * controller.scrollTo(function (newScrollPos) {\n\t\t *\t$(\"html, body\").animate({scrollTop: newScrollPos});\n\t\t * });\n\t\t * controller.scrollTo(100); // call as usual, but the new function will be used instead\n\t\t *\n\t\t * // define a new scroll function with an additional parameter\n\t\t * controller.scrollTo(function (newScrollPos, message) {\n\t\t * console.log(message);\n\t\t *\t$(this).animate({scrollTop: newScrollPos});\n\t\t * });\n\t\t * // call as usual, but supply an extra parameter to the defined custom function\n\t\t * controller.scrollTo(100, \"my message\");\n\t\t *\n\t\t * // define a new scroll function with an additional parameter containing multiple variables\n\t\t * controller.scrollTo(function (newScrollPos, options) {\n\t\t * someGlobalVar = options.a + options.b;\n\t\t *\t$(this).animate({scrollTop: newScrollPos});\n\t\t * });\n\t\t * // call as usual, but supply an extra parameter containing multiple options\n\t\t * controller.scrollTo(100, {a: 1, b: 2});\n\t\t *\n\t\t * // define a new scroll function with a callback supplied as an additional parameter\n\t\t * controller.scrollTo(function (newScrollPos, callback) {\n\t\t *\t$(this).animate({scrollTop: newScrollPos}, 400, \"swing\", callback);\n\t\t * });\n\t\t * // call as usual, but supply an extra parameter, which is used as a callback in the previously defined custom scroll function\n\t\t * controller.scrollTo(100, function() {\n\t\t *\tconsole.log(\"scroll has finished.\");\n\t\t * });\n\t\t *\n\t\t * @param {mixed} scrollTarget - The supplied argument can be one of these types:\n\t\t * 1. `number` -> The container will scroll to this new scroll offset.\n\t\t * 2. `string` or `object` -> Can be a selector or a DOM object. \n\t\t * The container will scroll to the position of this element.\n\t\t * 3. `ScrollMagic Scene` -> The container will scroll to the start of this scene.\n\t\t * 4. `function` -> This function will be used for future scroll position modifications. \n\t\t * This provides a way for you to change the behaviour of scrolling and adding new behaviour like animation. The function receives the new scroll position as a parameter and a reference to the container element using `this`. \n\t\t * It may also optionally receive an optional additional parameter (see below) \n\t\t * _**NOTE:** \n\t\t * All other options will still work as expected, using the new function to scroll._\n\t\t * @param {mixed} [additionalParameter] - If a custom scroll function was defined (see above 4.), you may want to supply additional parameters to it, when calling it. You can do this using this parameter – see examples for details. Please note, that this parameter will have no effect, if you use the default scrolling function.\n\t\t * @returns {Controller} Parent object for chaining.\n\t\t */\n\t\tthis.scrollTo = function (scrollTarget, additionalParameter) {\n\t\t\tif (_util.type.Number(scrollTarget)) { // excecute\n\t\t\t\tsetScrollPos.call(_options.container, scrollTarget, additionalParameter);\n\t\t\t} else if (scrollTarget instanceof ScrollMagic.Scene) { // scroll to scene\n\t\t\t\tif (scrollTarget.controller() === Controller) { // check if the controller is associated with this scene\n\t\t\t\t\tController.scrollTo(scrollTarget.scrollOffset(), additionalParameter);\n\t\t\t\t} else {\n\t\t\t\t\tlog(2, \"scrollTo(): The supplied scene does not belong to this controller. Scroll cancelled.\", scrollTarget);\n\t\t\t\t}\n\t\t\t} else if (_util.type.Function(scrollTarget)) { // assign new scroll function\n\t\t\t\tsetScrollPos = scrollTarget;\n\t\t\t} else { // scroll to element\n\t\t\t\tvar elem = _util.get.elements(scrollTarget)[0];\n\t\t\t\tif (elem) {\n\t\t\t\t\t// if parent is pin spacer, use spacer position instead so correct start position is returned for pinned elements.\n\t\t\t\t\twhile (elem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\n\t\t\t\t\t\telem = elem.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar\n\t\t\t\t\tparam = _options.vertical ? \"top\" : \"left\",\n\t\t\t\t\t\t// which param is of interest ?\n\t\t\t\t\t\tcontainerOffset = _util.get.offset(_options.container),\n\t\t\t\t\t\t// container position is needed because element offset is returned in relation to document, not in relation to container.\n\t\t\t\t\t\telementOffset = _util.get.offset(elem);\n\n\t\t\t\t\tif (!_isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent\n\t\t\t\t\t\tcontainerOffset[param] -= Controller.scrollPos();\n\t\t\t\t\t}\n\n\t\t\t\t\tController.scrollTo(elementOffset[param] - containerOffset[param], additionalParameter);\n\t\t\t\t} else {\n\t\t\t\t\tlog(2, \"scrollTo(): The supplied argument is invalid. Scroll cancelled.\", scrollTarget);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * **Get** the current scrollPosition or **Set** a new method to calculate it. \n\t\t * -> **GET**:\n\t\t * When used as a getter this function will return the current scroll position. \n\t\t * To get a cached value use Controller.info(\"scrollPos\"), which will be updated in the update cycle. \n\t\t * For vertical controllers it will return the top scroll offset and for horizontal applications it will return the left offset.\n\t\t *\n\t\t * -> **SET**:\n\t\t * When used as a setter this method prodes a way to permanently overwrite the controller's scroll position calculation. \n\t\t * A typical usecase is when the scroll position is not reflected by the containers scrollTop or scrollLeft values, but for example by the inner offset of a child container. \n\t\t * Moving a child container inside a parent is a commonly used method for several scrolling frameworks, including iScroll. \n\t\t * By providing an alternate calculation function you can make sure ScrollMagic receives the correct scroll position. \n\t\t * Please also bear in mind that your function should return y values for vertical scrolls an x for horizontals.\n\t\t *\n\t\t * To change the current scroll position please use `Controller.scrollTo()`.\n\t\t * @public\n\t\t *\n\t\t * @example\n\t\t * // get the current scroll Position\n\t\t * var scrollPos = controller.scrollPos();\n\t\t *\n\t\t * // set a new scroll position calculation method\n\t\t * controller.scrollPos(function () {\n\t\t *\treturn this.info(\"vertical\") ? -mychildcontainer.y : -mychildcontainer.x\n\t\t * });\n\t\t *\n\t\t * @param {function} [scrollPosMethod] - The function to be used for the scroll position calculation of the container.\n\t\t * @returns {(number|Controller)} Current scroll position or parent object for chaining.\n\t\t */\n\t\tthis.scrollPos = function (scrollPosMethod) {\n\t\t\tif (!arguments.length) { // get\n\t\t\t\treturn getScrollPos.call(Controller);\n\t\t\t} else { // set\n\t\t\t\tif (_util.type.Function(scrollPosMethod)) {\n\t\t\t\t\tgetScrollPos = scrollPosMethod;\n\t\t\t\t} else {\n\t\t\t\t\tlog(2, \"Provided value for method 'scrollPos' is not a function. To change the current scroll position use 'scrollTo()'.\");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * **Get** all infos or one in particular about the controller.\n\t\t * @public\n\t\t * @example\n\t\t * // returns the current scroll position (number)\n\t\t * var scrollPos = controller.info(\"scrollPos\");\n\t\t *\n\t\t * // returns all infos as an object\n\t\t * var infos = controller.info();\n\t\t *\n\t\t * @param {string} [about] - If passed only this info will be returned instead of an object containing all. \n\t\t Valid options are:\n\t\t ** `\"size\"` => the current viewport size of the container\n\t\t ** `\"vertical\"` => true if vertical scrolling, otherwise false\n\t\t ** `\"scrollPos\"` => the current scroll position\n\t\t ** `\"scrollDirection\"` => the last known direction of the scroll\n\t\t ** `\"container\"` => the container element\n\t\t ** `\"isDocument\"` => true if container element is the document.\n\t\t * @returns {(mixed|object)} The requested info(s).\n\t\t */\n\t\tthis.info = function (about) {\n\t\t\tvar values = {\n\t\t\t\tsize: _viewPortSize,\n\t\t\t\t// contains height or width (in regard to orientation);\n\t\t\t\tvertical: _options.vertical,\n\t\t\t\tscrollPos: _scrollPos,\n\t\t\t\tscrollDirection: _scrollDirection,\n\t\t\t\tcontainer: _options.container,\n\t\t\t\tisDocument: _isDocument\n\t\t\t};\n\t\t\tif (!arguments.length) { // get all as an object\n\t\t\t\treturn values;\n\t\t\t} else if (values[about] !== undefined) {\n\t\t\t\treturn values[about];\n\t\t\t} else {\n\t\t\t\tlog(1, \"ERROR: option \\\"\" + about + \"\\\" is not available\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * **Get** or **Set** the current loglevel option value.\n\t\t * @public\n\t\t *\n\t\t * @example\n\t\t * // get the current value\n\t\t * var loglevel = controller.loglevel();\n\t\t *\n\t\t * // set a new value\n\t\t * controller.loglevel(3);\n\t\t *\n\t\t * @param {number} [newLoglevel] - The new loglevel setting of the Controller. `[0-3]`\n\t\t * @returns {(number|Controller)} Current loglevel or parent object for chaining.\n\t\t */\n\t\tthis.loglevel = function (newLoglevel) {\n\t\t\tif (!arguments.length) { // get\n\t\t\t\treturn _options.loglevel;\n\t\t\t} else if (_options.loglevel != newLoglevel) { // set\n\t\t\t\t_options.loglevel = newLoglevel;\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * **Get** or **Set** the current enabled state of the controller. \n\t\t * This can be used to disable all Scenes connected to the controller without destroying or removing them.\n\t\t * @public\n\t\t *\n\t\t * @example\n\t\t * // get the current value\n\t\t * var enabled = controller.enabled();\n\t\t *\n\t\t * // disable the controller\n\t\t * controller.enabled(false);\n\t\t *\n\t\t * @param {boolean} [newState] - The new enabled state of the controller `true` or `false`.\n\t\t * @returns {(boolean|Controller)} Current enabled state or parent object for chaining.\n\t\t */\n\t\tthis.enabled = function (newState) {\n\t\t\tif (!arguments.length) { // get\n\t\t\t\treturn _enabled;\n\t\t\t} else if (_enabled != newState) { // set\n\t\t\t\t_enabled = !! newState;\n\t\t\t\tController.updateScene(_sceneObjects, true);\n\t\t\t}\n\t\t\treturn Controller;\n\t\t};\n\n\t\t/**\n\t\t * Destroy the Controller, all Scenes and everything.\n\t\t * @public\n\t\t *\n\t\t * @example\n\t\t * // without resetting the scenes\n\t\t * controller = controller.destroy();\n\t\t *\n\t\t * // with scene reset\n\t\t * controller = controller.destroy(true);\n\t\t *\n\t\t * @param {boolean} [resetScenes=false] - If `true` the pins and tweens (if existent) of all scenes will be reset.\n\t\t * @returns {null} Null to unset handler variables.\n\t\t */\n\t\tthis.destroy = function (resetScenes) {\n\t\t\twindow.clearTimeout(_refreshTimeout);\n\t\t\tvar i = _sceneObjects.length;\n\t\t\twhile (i--) {\n\t\t\t\t_sceneObjects[i].destroy(resetScenes);\n\t\t\t}\n\t\t\t_options.container.removeEventListener(\"resize\", onChange);\n\t\t\t_options.container.removeEventListener(\"scroll\", onChange);\n\t\t\t_util.cAF(_updateTimeout);\n\t\t\tlog(3, \"destroyed \" + NAMESPACE + \" (reset: \" + (resetScenes ? \"true\" : \"false\") + \")\");\n\t\t\treturn null;\n\t\t};\n\n\t\t// INIT\n\t\tconstruct();\n\t\treturn Controller;\n\t};\n\n\t// store pagewide controller options\n\tvar CONTROLLER_OPTIONS = {\n\t\tdefaults: {\n\t\t\tcontainer: window,\n\t\t\tvertical: true,\n\t\t\tglobalSceneOptions: {},\n\t\t\tloglevel: 2,\n\t\t\trefreshInterval: 100\n\t\t}\n\t};\n/*\n * method used to add an option to ScrollMagic Scenes.\n */\n\tScrollMagic.Controller.addOption = function (name, defaultValue) {\n\t\tCONTROLLER_OPTIONS.defaults[name] = defaultValue;\n\t};\n\t// instance extension function for plugins\n\tScrollMagic.Controller.extend = function (extension) {\n\t\tvar oldClass = this;\n\t\tScrollMagic.Controller = function () {\n\t\t\toldClass.apply(this, arguments);\n\t\t\tthis.$super = _util.extend({}, this); // copy parent state\n\t\t\treturn extension.apply(this, arguments) || this;\n\t\t};\n\t\t_util.extend(ScrollMagic.Controller, oldClass); // copy properties\n\t\tScrollMagic.Controller.prototype = oldClass.prototype; // copy prototype\n\t\tScrollMagic.Controller.prototype.constructor = ScrollMagic.Controller; // restore constructor\n\t};\n\n\n\t/**\n\t * A Scene defines where the controller should react and how.\n\t *\n\t * @class\n\t *\n\t * @example\n\t * // create a standard scene and add it to a controller\n\t * new ScrollMagic.Scene()\n\t *\t\t.addTo(controller);\n\t *\n\t * // create a scene with custom options and assign a handler to it.\n\t * var scene = new ScrollMagic.Scene({\n\t * \t\tduration: 100,\n\t *\t\toffset: 200,\n\t *\t\ttriggerHook: \"onEnter\",\n\t *\t\treverse: false\n\t * });\n\t *\n\t * @param {object} [options] - Options for the Scene. The options can be updated at any time. \n\t Instead of setting the options for each scene individually you can also set them globally in the controller as the controllers `globalSceneOptions` option. The object accepts the same properties as the ones below. \n\t When a scene is added to the controller the options defined using the Scene constructor will be overwritten by those set in `globalSceneOptions`.\n\t * @param {(number|function)} [options.duration=0] - The duration of the scene. \n\t If `0` tweens will auto-play when reaching the scene start point, pins will be pinned indefinetly starting at the start position. \n\t A function retuning the duration value is also supported. Please see `Scene.duration()` for details.\n\t * @param {number} [options.offset=0] - Offset Value for the Trigger Position. If no triggerElement is defined this will be the scroll distance from the start of the page, after which the scene will start.\n\t * @param {(string|object)} [options.triggerElement=null] - Selector or DOM object that defines the start of the scene. If undefined the scene will start right at the start of the page (unless an offset is set).\n\t * @param {(number|string)} [options.triggerHook=\"onCenter\"] - Can be a number between 0 and 1 defining the position of the trigger Hook in relation to the viewport. \n\t Can also be defined using a string:\n\t ** `\"onEnter\"` => `1`\n\t ** `\"onCenter\"` => `0.5`\n\t ** `\"onLeave\"` => `0`\n\t * @param {boolean} [options.reverse=true] - Should the scene reverse, when scrolling up?\n\t * @param {number} [options.loglevel=2] - Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.\n\t ** `0` => silent\n\t ** `1` => errors\n\t ** `2` => errors, warnings\n\t ** `3` => errors, warnings, debuginfo\n\t * \n\t */\n\tScrollMagic.Scene = function (options) {\n\n/*\n\t * ----------------------------------------------------------------\n\t * settings\n\t * ----------------------------------------------------------------\n\t */\n\n\t\tvar\n\t\tNAMESPACE = 'ScrollMagic.Scene',\n\t\t\tSCENE_STATE_BEFORE = 'BEFORE',\n\t\t\tSCENE_STATE_DURING = 'DURING',\n\t\t\tSCENE_STATE_AFTER = 'AFTER',\n\t\t\tDEFAULT_OPTIONS = SCENE_OPTIONS.defaults;\n\n/*\n\t * ----------------------------------------------------------------\n\t * private vars\n\t * ----------------------------------------------------------------\n\t */\n\n\t\tvar\n\t\tScene = this,\n\t\t\t_options = _util.extend({}, DEFAULT_OPTIONS, options),\n\t\t\t_state = SCENE_STATE_BEFORE,\n\t\t\t_progress = 0,\n\t\t\t_scrollOffset = {\n\t\t\t\tstart: 0,\n\t\t\t\tend: 0\n\t\t\t},\n\t\t\t// reflects the controllers's scroll position for the start and end of the scene respectively\n\t\t\t_triggerPos = 0,\n\t\t\t_enabled = true,\n\t\t\t_durationUpdateMethod, _controller;\n\n\t\t/**\n\t\t * Internal constructor function of the ScrollMagic Scene\n\t\t * @private\n\t\t */\n\t\tvar construct = function () {\n\t\t\tfor (var key in _options) { // check supplied options\n\t\t\t\tif (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\n\t\t\t\t\tlog(2, \"WARNING: Unknown option \\\"\" + key + \"\\\"\");\n\t\t\t\t\tdelete _options[key];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// add getters/setters for all possible options\n\t\t\tfor (var optionName in DEFAULT_OPTIONS) {\n\t\t\t\taddSceneOption(optionName);\n\t\t\t}\n\t\t\t// validate all options\n\t\t\tvalidateOption();\n\t\t};\n\n/*\n * ----------------------------------------------------------------\n * Event Management\n * ----------------------------------------------------------------\n */\n\n\t\tvar _listeners = {};\n\t\t/**\n\t\t * Scene start event. \n\t\t * Fires whenever the scroll position its the starting point of the scene. \n\t\t * It will also fire when scrolling back up going over the start position of the scene. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.\n\t\t *\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n\t\t *\n\t\t * @event ScrollMagic.Scene#start\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"start\", function (event) {\n\t\t * \tconsole.log(\"Hit start point of scene.\");\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\n\t\t * @property {string} event.state - The current state of the scene `\"BEFORE\"` or `\"DURING\"`\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n\t\t */\n\t\t/**\n\t\t * Scene end event. \n\t\t * Fires whenever the scroll position its the ending point of the scene. \n\t\t * It will also fire when scrolling back up from after the scene and going over its end position. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.\n\t\t *\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n\t\t *\n\t\t * @event ScrollMagic.Scene#end\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"end\", function (event) {\n\t\t * \tconsole.log(\"Hit end point of scene.\");\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\n\t\t * @property {string} event.state - The current state of the scene `\"DURING\"` or `\"AFTER\"`\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n\t\t */\n\t\t/**\n\t\t * Scene enter event. \n\t\t * Fires whenever the scene enters the \"DURING\" state. \n\t\t * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene enters its active scroll timeframe, regardless of the scroll-direction.\n\t\t *\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n\t\t *\n\t\t * @event ScrollMagic.Scene#enter\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"enter\", function (event) {\n\t\t * \tconsole.log(\"Scene entered.\");\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\n\t\t * @property {string} event.state - The current state of the scene - always `\"DURING\"`\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n\t\t */\n\t\t/**\n\t\t * Scene leave event. \n\t\t * Fires whenever the scene's state goes from \"DURING\" to either \"BEFORE\" or \"AFTER\". \n\t\t * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene leaves its active scroll timeframe, regardless of the scroll-direction.\n\t\t *\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n\t\t *\n\t\t * @event ScrollMagic.Scene#leave\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"leave\", function (event) {\n\t\t * \tconsole.log(\"Scene left.\");\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\n\t\t * @property {string} event.state - The current state of the scene `\"BEFORE\"` or `\"AFTER\"`\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n\t\t */\n\t\t/**\n\t\t * Scene update event. \n\t\t * Fires whenever the scene is updated (but not necessarily changes the progress).\n\t\t *\n\t\t * @event ScrollMagic.Scene#update\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"update\", function (event) {\n\t\t * \tconsole.log(\"Scene updated.\");\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {number} event.startPos - The starting position of the scene (in relation to the conainer)\n\t\t * @property {number} event.endPos - The ending position of the scene (in relation to the conainer)\n\t\t * @property {number} event.scrollPos - The current scroll position of the container\n\t\t */\n\t\t/**\n\t\t * Scene progress event. \n\t\t * Fires whenever the progress of the scene changes.\n\t\t *\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n\t\t *\n\t\t * @event ScrollMagic.Scene#progress\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"progress\", function (event) {\n\t\t * \tconsole.log(\"Scene progress changed to \" + event.progress);\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\n\t\t * @property {string} event.state - The current state of the scene `\"BEFORE\"`, `\"DURING\"` or `\"AFTER\"`\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n\t\t */\n\t\t/**\n\t\t * Scene change event. \n\t\t * Fires whenvever a property of the scene is changed.\n\t\t *\n\t\t * @event ScrollMagic.Scene#change\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"change\", function (event) {\n\t\t * \tconsole.log(\"Scene Property \\\"\" + event.what + \"\\\" changed to \" + event.newval);\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {string} event.what - Indicates what value has been changed\n\t\t * @property {mixed} event.newval - The new value of the changed property\n\t\t */\n\t\t/**\n\t\t * Scene shift event. \n\t\t * Fires whenvever the start or end **scroll offset** of the scene change.\n\t\t * This happens explicitely, when one of these values change: `offset`, `duration` or `triggerHook`.\n\t\t * It will fire implicitly when the `triggerElement` changes, if the new element has a different position (most cases).\n\t\t * It will also fire implicitly when the size of the container changes and the triggerHook is anything other than `onLeave`.\n\t\t *\n\t\t * @event ScrollMagic.Scene#shift\n\t\t * @since 1.1.0\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"shift\", function (event) {\n\t\t * \tconsole.log(\"Scene moved, because the \" + event.reason + \" has changed.)\");\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {string} event.reason - Indicates why the scene has shifted\n\t\t */\n\t\t/**\n\t\t * Scene destroy event. \n\t\t * Fires whenvever the scene is destroyed.\n\t\t * This can be used to tidy up custom behaviour used in events.\n\t\t *\n\t\t * @event ScrollMagic.Scene#destroy\n\t\t * @since 1.1.0\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"enter\", function (event) {\n\t\t * // add custom action\n\t\t * $(\"#my-elem\").left(\"200\");\n\t\t * })\n\t\t * .on(\"destroy\", function (event) {\n\t\t * // reset my element to start position\n\t\t * if (event.reset) {\n\t\t * $(\"#my-elem\").left(\"0\");\n\t\t * }\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {boolean} event.reset - Indicates if the destroy method was called with reset `true` or `false`.\n\t\t */\n\t\t/**\n\t\t * Scene add event. \n\t\t * Fires when the scene is added to a controller.\n\t\t * This is mostly used by plugins to know that change might be due.\n\t\t *\n\t\t * @event ScrollMagic.Scene#add\n\t\t * @since 2.0.0\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"add\", function (event) {\n\t\t * \tconsole.log('Scene was added to a new controller.');\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t * @property {boolean} event.controller - The controller object the scene was added to.\n\t\t */\n\t\t/**\n\t\t * Scene remove event. \n\t\t * Fires when the scene is removed from a controller.\n\t\t * This is mostly used by plugins to know that change might be due.\n\t\t *\n\t\t * @event ScrollMagic.Scene#remove\n\t\t * @since 2.0.0\n\t\t *\n\t\t * @example\n\t\t * scene.on(\"remove\", function (event) {\n\t\t * \tconsole.log('Scene was removed from its controller.');\n\t\t * });\n\t\t *\n\t\t * @property {object} event - The event Object passed to each callback\n\t\t * @property {string} event.type - The name of the event\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\n\t\t */\n\n\t\t/**\n\t\t * Add one ore more event listener. \n\t\t * The callback function will be fired at the respective event, and an object containing relevant data will be passed to the callback.\n\t\t * @method ScrollMagic.Scene#on\n\t\t *\n\t\t * @example\n\t\t * function callback (event) {\n\t\t * \t\tconsole.log(\"Event fired! (\" + event.type + \")\");\n\t\t * }\n\t\t * // add listeners\n\t\t * scene.on(\"change update progress start end enter leave\", callback);\n\t\t *\n\t\t * @param {string} names - The name or names of the event the callback should be attached to.\n\t\t * @param {function} callback - A function that should be executed, when the event is dispatched. An event object will be passed to the callback.\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.on = function (names, callback) {\n\t\t\tif (_util.type.Function(callback)) {\n\t\t\t\tnames = names.trim().split(' ');\n\t\t\t\tnames.forEach(function (fullname) {\n\t\t\t\t\tvar\n\t\t\t\t\tnameparts = fullname.split('.'),\n\t\t\t\t\t\teventname = nameparts[0],\n\t\t\t\t\t\tnamespace = nameparts[1];\n\t\t\t\t\tif (eventname != \"*\") { // disallow wildcards\n\t\t\t\t\t\tif (!_listeners[eventname]) {\n\t\t\t\t\t\t\t_listeners[eventname] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_listeners[eventname].push({\n\t\t\t\t\t\t\tnamespace: namespace || '',\n\t\t\t\t\t\t\tcallback: callback\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tlog(1, \"ERROR when calling '.on()': Supplied callback for '\" + names + \"' is not a valid function!\");\n\t\t\t}\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * Remove one or more event listener.\n\t\t * @method ScrollMagic.Scene#off\n\t\t *\n\t\t * @example\n\t\t * function callback (event) {\n\t\t * \t\tconsole.log(\"Event fired! (\" + event.type + \")\");\n\t\t * }\n\t\t * // add listeners\n\t\t * scene.on(\"change update\", callback);\n\t\t * // remove listeners\n\t\t * scene.off(\"change update\", callback);\n\t\t *\n\t\t * @param {string} names - The name or names of the event that should be removed.\n\t\t * @param {function} [callback] - A specific callback function that should be removed. If none is passed all callbacks to the event listener will be removed.\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.off = function (names, callback) {\n\t\t\tif (!names) {\n\t\t\t\tlog(1, \"ERROR: Invalid event name supplied.\");\n\t\t\t\treturn Scene;\n\t\t\t}\n\t\t\tnames = names.trim().split(' ');\n\t\t\tnames.forEach(function (fullname, key) {\n\t\t\t\tvar\n\t\t\t\tnameparts = fullname.split('.'),\n\t\t\t\t\teventname = nameparts[0],\n\t\t\t\t\tnamespace = nameparts[1] || '',\n\t\t\t\t\tremoveList = eventname === '*' ? Object.keys(_listeners) : [eventname];\n\t\t\t\tremoveList.forEach(function (remove) {\n\t\t\t\t\tvar\n\t\t\t\t\tlist = _listeners[remove] || [],\n\t\t\t\t\t\ti = list.length;\n\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\tvar listener = list[i];\n\t\t\t\t\t\tif (listener && (namespace === listener.namespace || namespace === '*') && (!callback || callback == listener.callback)) {\n\t\t\t\t\t\t\tlist.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!list.length) {\n\t\t\t\t\t\tdelete _listeners[remove];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * Trigger an event.\n\t\t * @method ScrollMagic.Scene#trigger\n\t\t *\n\t\t * @example\n\t\t * this.trigger(\"change\");\n\t\t *\n\t\t * @param {string} name - The name of the event that should be triggered.\n\t\t * @param {object} [vars] - An object containing info that should be passed to the callback.\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.trigger = function (name, vars) {\n\t\t\tif (name) {\n\t\t\t\tvar\n\t\t\t\tnameparts = name.trim().split('.'),\n\t\t\t\t\teventname = nameparts[0],\n\t\t\t\t\tnamespace = nameparts[1],\n\t\t\t\t\tlisteners = _listeners[eventname];\n\t\t\t\tlog(3, 'event fired:', eventname, vars ? \"->\" : '', vars || '');\n\t\t\t\tif (listeners) {\n\t\t\t\t\tlisteners.forEach(function (listener, key) {\n\t\t\t\t\t\tif (!namespace || namespace === listener.namespace) {\n\t\t\t\t\t\t\tlistener.callback.call(Scene, new ScrollMagic.Event(eventname, listener.namespace, Scene, vars));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlog(1, \"ERROR: Invalid event name supplied.\");\n\t\t\t}\n\t\t\treturn Scene;\n\t\t};\n\n\t\t// set event listeners\n\t\tScene.on(\"change.internal\", function (e) {\n\t\t\tif (e.what !== \"loglevel\" && e.what !== \"tweenChanges\") { // no need for a scene update scene with these options...\n\t\t\t\tif (e.what === \"triggerElement\") {\n\t\t\t\t\tupdateTriggerElementPosition();\n\t\t\t\t} else if (e.what === \"reverse\") { // the only property left that may have an impact on the current scene state. Everything else is handled by the shift event.\n\t\t\t\t\tScene.update();\n\t\t\t\t}\n\t\t\t}\n\t\t}).on(\"shift.internal\", function (e) {\n\t\t\tupdateScrollOffset();\n\t\t\tScene.update(); // update scene to reflect new position\n\t\t});\n\n\t\t/**\n\t\t * Send a debug message to the console.\n\t\t * @private\n\t\t * but provided publicly with _log for plugins\n\t\t *\n\t\t * @param {number} loglevel - The loglevel required to initiate output for the message.\n\t\t * @param {...mixed} output - One or more variables that should be passed to the console.\n\t\t */\n\t\tvar log = this._log = function (loglevel, output) {\n\t\t\tif (_options.loglevel >= loglevel) {\n\t\t\t\tArray.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \") ->\");\n\t\t\t\t_util.log.apply(window, arguments);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Add the scene to a controller. \n\t\t * This is the equivalent to `Controller.addScene(scene)`.\n\t\t * @method ScrollMagic.Scene#addTo\n\t\t *\n\t\t * @example\n\t\t * // add a scene to a ScrollMagic Controller\n\t\t * scene.addTo(controller);\n\t\t *\n\t\t * @param {ScrollMagic.Controller} controller - The controller to which the scene should be added.\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.addTo = function (controller) {\n\t\t\tif (!(controller instanceof ScrollMagic.Controller)) {\n\t\t\t\tlog(1, \"ERROR: supplied argument of 'addTo()' is not a valid ScrollMagic Controller\");\n\t\t\t} else if (_controller != controller) {\n\t\t\t\t// new controller\n\t\t\t\tif (_controller) { // was associated to a different controller before, so remove it...\n\t\t\t\t\t_controller.removeScene(Scene);\n\t\t\t\t}\n\t\t\t\t_controller = controller;\n\t\t\t\tvalidateOption();\n\t\t\t\tupdateDuration(true);\n\t\t\t\tupdateTriggerElementPosition(true);\n\t\t\t\tupdateScrollOffset();\n\t\t\t\t_controller.info(\"container\").addEventListener('resize', onContainerResize);\n\t\t\t\tcontroller.addScene(Scene);\n\t\t\t\tScene.trigger(\"add\", {\n\t\t\t\t\tcontroller: _controller\n\t\t\t\t});\n\t\t\t\tlog(3, \"added \" + NAMESPACE + \" to controller\");\n\t\t\t\tScene.update();\n\t\t\t}\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * **Get** or **Set** the current enabled state of the scene. \n\t\t * This can be used to disable this scene without removing or destroying it.\n\t\t * @method ScrollMagic.Scene#enabled\n\t\t *\n\t\t * @example\n\t\t * // get the current value\n\t\t * var enabled = scene.enabled();\n\t\t *\n\t\t * // disable the scene\n\t\t * scene.enabled(false);\n\t\t *\n\t\t * @param {boolean} [newState] - The new enabled state of the scene `true` or `false`.\n\t\t * @returns {(boolean|Scene)} Current enabled state or parent object for chaining.\n\t\t */\n\t\tthis.enabled = function (newState) {\n\t\t\tif (!arguments.length) { // get\n\t\t\t\treturn _enabled;\n\t\t\t} else if (_enabled != newState) { // set\n\t\t\t\t_enabled = !! newState;\n\t\t\t\tScene.update(true);\n\t\t\t}\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * Remove the scene from the controller. \n\t\t * This is the equivalent to `Controller.removeScene(scene)`.\n\t\t * The scene will not be updated anymore until you readd it to a controller.\n\t\t * To remove the pin or the tween you need to call removeTween() or removePin() respectively.\n\t\t * @method ScrollMagic.Scene#remove\n\t\t * @example\n\t\t * // remove the scene from its controller\n\t\t * scene.remove();\n\t\t *\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.remove = function () {\n\t\t\tif (_controller) {\n\t\t\t\t_controller.info(\"container\").removeEventListener('resize', onContainerResize);\n\t\t\t\tvar tmpParent = _controller;\n\t\t\t\t_controller = undefined;\n\t\t\t\ttmpParent.removeScene(Scene);\n\t\t\t\tScene.trigger(\"remove\");\n\t\t\t\tlog(3, \"removed \" + NAMESPACE + \" from controller\");\n\t\t\t}\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * Destroy the scene and everything.\n\t\t * @method ScrollMagic.Scene#destroy\n\t\t * @example\n\t\t * // destroy the scene without resetting the pin and tween to their initial positions\n\t\t * scene = scene.destroy();\n\t\t *\n\t\t * // destroy the scene and reset the pin and tween\n\t\t * scene = scene.destroy(true);\n\t\t *\n\t\t * @param {boolean} [reset=false] - If `true` the pin and tween (if existent) will be reset.\n\t\t * @returns {null} Null to unset handler variables.\n\t\t */\n\t\tthis.destroy = function (reset) {\n\t\t\tScene.trigger(\"destroy\", {\n\t\t\t\treset: reset\n\t\t\t});\n\t\t\tScene.remove();\n\t\t\tScene.off(\"*.*\");\n\t\t\tlog(3, \"destroyed \" + NAMESPACE + \" (reset: \" + (reset ? \"true\" : \"false\") + \")\");\n\t\t\treturn null;\n\t\t};\n\n\n\t\t/**\n\t\t * Updates the Scene to reflect the current state. \n\t\t * This is the equivalent to `Controller.updateScene(scene, immediately)`. \n\t\t * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container. \n\t\t * It then updates the current scene state accordingly (or does nothing, if the state is already correct) – Pins will be set to their correct position and tweens will be updated to their correct progress.\n\t\t * This means an update doesn't necessarily result in a progress change. The `progress` event will be fired if the progress has indeed changed between this update and the last. \n\t\t * _**NOTE:** This method gets called constantly whenever ScrollMagic detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._\n\t\t * @method ScrollMagic.Scene#update\n\t\t * @example\n\t\t * // update the scene on next tick\n\t\t * scene.update();\n\t\t *\n\t\t * // update the scene immediately\n\t\t * scene.update(true);\n\t\t *\n\t\t * @fires Scene.update\n\t\t *\n\t\t * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance).\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.update = function (immediately) {\n\t\t\tif (_controller) {\n\t\t\t\tif (immediately) {\n\t\t\t\t\tif (_controller.enabled() && _enabled) {\n\t\t\t\t\t\tvar\n\t\t\t\t\t\tscrollPos = _controller.info(\"scrollPos\"),\n\t\t\t\t\t\t\tnewProgress;\n\n\t\t\t\t\t\tif (_options.duration > 0) {\n\t\t\t\t\t\t\tnewProgress = (scrollPos - _scrollOffset.start) / (_scrollOffset.end - _scrollOffset.start);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnewProgress = scrollPos >= _scrollOffset.start ? 1 : 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tScene.trigger(\"update\", {\n\t\t\t\t\t\t\tstartPos: _scrollOffset.start,\n\t\t\t\t\t\t\tendPos: _scrollOffset.end,\n\t\t\t\t\t\t\tscrollPos: scrollPos\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tScene.progress(newProgress);\n\t\t\t\t\t} else if (_pin && _state === SCENE_STATE_DURING) {\n\t\t\t\t\t\tupdatePinState(true); // unpin in position\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t_controller.updateScene(Scene, false);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * Updates dynamic scene variables like the trigger element position or the duration.\n\t\t * This method is automatically called in regular intervals from the controller. See {@link ScrollMagic.Controller} option `refreshInterval`.\n\t\t * \n\t\t * You can call it to minimize lag, for example when you intentionally change the position of the triggerElement.\n\t\t * If you don't it will simply be updated in the next refresh interval of the container, which is usually sufficient.\n\t\t *\n\t\t * @method ScrollMagic.Scene#refresh\n\t\t * @since 1.1.0\n\t\t * @example\n\t\t * scene = new ScrollMagic.Scene({triggerElement: \"#trigger\"});\n\t\t * \n\t\t * // change the position of the trigger\n\t\t * $(\"#trigger\").css(\"top\", 500);\n\t\t * // immediately let the scene know of this change\n\t\t * scene.refresh();\n\t\t *\n\t\t * @fires {@link Scene.shift}, if the trigger element position or the duration changed\n\t\t * @fires {@link Scene.change}, if the duration changed\n\t\t *\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.refresh = function () {\n\t\t\tupdateDuration();\n\t\t\tupdateTriggerElementPosition();\n\t\t\t// update trigger element position\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * **Get** or **Set** the scene's progress. \n\t\t * Usually it shouldn't be necessary to use this as a setter, as it is set automatically by scene.update(). \n\t\t * The order in which the events are fired depends on the duration of the scene:\n\t\t * 1. Scenes with `duration == 0`: \n\t\t * Scenes that have no duration by definition have no ending. Thus the `end` event will never be fired. \n\t\t * When the trigger position of the scene is passed the events are always fired in this order: \n\t\t * `enter`, `start`, `progress` when scrolling forward \n\t\t * and \n\t\t * `progress`, `start`, `leave` when scrolling in reverse\n\t\t * 2. Scenes with `duration > 0`: \n\t\t * Scenes with a set duration have a defined start and end point. \n\t\t * When scrolling past the start position of the scene it will fire these events in this order: \n\t\t * `enter`, `start`, `progress` \n\t\t * When continuing to scroll and passing the end point it will fire these events: \n\t\t * `progress`, `end`, `leave` \n\t\t * When reversing through the end point these events are fired: \n\t\t * `enter`, `end`, `progress` \n\t\t * And when continuing to scroll past the start position in reverse it will fire: \n\t\t * `progress`, `start`, `leave` \n\t\t * In between start and end the `progress` event will be called constantly, whenever the progress changes.\n\t\t * \n\t\t * In short: \n\t\t * `enter` events will always trigger **before** the progress update and `leave` envents will trigger **after** the progress update. \n\t\t * `start` and `end` will always trigger at their respective position.\n\t\t * \n\t\t * Please review the event descriptions for details on the events and the event object that is passed to the callback.\n\t\t * \n\t\t * @method ScrollMagic.Scene#progress\n\t\t * @example\n\t\t * // get the current scene progress\n\t\t * var progress = scene.progress();\n\t\t *\n\t\t * // set new scene progress\n\t\t * scene.progress(0.3);\n\t\t *\n\t\t * @fires {@link Scene.enter}, when used as setter\n\t\t * @fires {@link Scene.start}, when used as setter\n\t\t * @fires {@link Scene.progress}, when used as setter\n\t\t * @fires {@link Scene.end}, when used as setter\n\t\t * @fires {@link Scene.leave}, when used as setter\n\t\t *\n\t\t * @param {number} [progress] - The new progress value of the scene `[0-1]`.\n\t\t * @returns {number} `get` - Current scene progress.\n\t\t * @returns {Scene} `set` - Parent object for chaining.\n\t\t */\n\t\tthis.progress = function (progress) {\n\t\t\tif (!arguments.length) { // get\n\t\t\t\treturn _progress;\n\t\t\t} else { // set\n\t\t\t\tvar\n\t\t\t\tdoUpdate = false,\n\t\t\t\t\toldState = _state,\n\t\t\t\t\tscrollDirection = _controller ? _controller.info(\"scrollDirection\") : 'PAUSED',\n\t\t\t\t\treverseOrForward = _options.reverse || progress >= _progress;\n\t\t\t\tif (_options.duration === 0) {\n\t\t\t\t\t// zero duration scenes\n\t\t\t\t\tdoUpdate = _progress != progress;\n\t\t\t\t\t_progress = progress < 1 && reverseOrForward ? 0 : 1;\n\t\t\t\t\t_state = _progress === 0 ? SCENE_STATE_BEFORE : SCENE_STATE_DURING;\n\t\t\t\t} else {\n\t\t\t\t\t// scenes with start and end\n\t\t\t\t\tif (progress < 0 && _state !== SCENE_STATE_BEFORE && reverseOrForward) {\n\t\t\t\t\t\t// go back to initial state\n\t\t\t\t\t\t_progress = 0;\n\t\t\t\t\t\t_state = SCENE_STATE_BEFORE;\n\t\t\t\t\t\tdoUpdate = true;\n\t\t\t\t\t} else if (progress >= 0 && progress < 1 && reverseOrForward) {\n\t\t\t\t\t\t_progress = progress;\n\t\t\t\t\t\t_state = SCENE_STATE_DURING;\n\t\t\t\t\t\tdoUpdate = true;\n\t\t\t\t\t} else if (progress >= 1 && _state !== SCENE_STATE_AFTER) {\n\t\t\t\t\t\t_progress = 1;\n\t\t\t\t\t\t_state = SCENE_STATE_AFTER;\n\t\t\t\t\t\tdoUpdate = true;\n\t\t\t\t\t} else if (_state === SCENE_STATE_DURING && !reverseOrForward) {\n\t\t\t\t\t\tupdatePinState(); // in case we scrolled backwards mid-scene and reverse is disabled => update the pin position, so it doesn't move back as well.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (doUpdate) {\n\t\t\t\t\t// fire events\n\t\t\t\t\tvar\n\t\t\t\t\teventVars = {\n\t\t\t\t\t\tprogress: _progress,\n\t\t\t\t\t\tstate: _state,\n\t\t\t\t\t\tscrollDirection: scrollDirection\n\t\t\t\t\t},\n\t\t\t\t\t\tstateChanged = _state != oldState;\n\n\t\t\t\t\tvar trigger = function (eventName) { // tmp helper to simplify code\n\t\t\t\t\t\tScene.trigger(eventName, eventVars);\n\t\t\t\t\t};\n\n\t\t\t\t\tif (stateChanged) { // enter events\n\t\t\t\t\t\tif (oldState !== SCENE_STATE_DURING) {\n\t\t\t\t\t\t\ttrigger(\"enter\");\n\t\t\t\t\t\t\ttrigger(oldState === SCENE_STATE_BEFORE ? \"start\" : \"end\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttrigger(\"progress\");\n\t\t\t\t\tif (stateChanged) { // leave events\n\t\t\t\t\t\tif (_state !== SCENE_STATE_DURING) {\n\t\t\t\t\t\t\ttrigger(_state === SCENE_STATE_BEFORE ? \"start\" : \"end\");\n\t\t\t\t\t\t\ttrigger(\"leave\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Scene;\n\t\t\t}\n\t\t};\n\n\n\t\t/**\n\t\t * Update the start and end scrollOffset of the container.\n\t\t * The positions reflect what the controller's scroll position will be at the start and end respectively.\n\t\t * Is called, when:\n\t\t * - Scene event \"change\" is called with: offset, triggerHook, duration \n\t\t * - scroll container event \"resize\" is called\n\t\t * - the position of the triggerElement changes\n\t\t * - the controller changes -> addTo()\n\t\t * @private\n\t\t */\n\t\tvar updateScrollOffset = function () {\n\t\t\t_scrollOffset = {\n\t\t\t\tstart: _triggerPos + _options.offset\n\t\t\t};\n\t\t\tif (_controller && _options.triggerElement) {\n\t\t\t\t// take away triggerHook portion to get relative to top\n\t\t\t\t_scrollOffset.start -= _controller.info(\"size\") * _options.triggerHook;\n\t\t\t}\n\t\t\t_scrollOffset.end = _scrollOffset.start + _options.duration;\n\t\t};\n\n\t\t/**\n\t\t * Updates the duration if set to a dynamic function.\n\t\t * This method is called when the scene is added to a controller and in regular intervals from the controller through scene.refresh().\n\t\t * \n\t\t * @fires {@link Scene.change}, if the duration changed\n\t\t * @fires {@link Scene.shift}, if the duration changed\n\t\t *\n\t\t * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.\n\t\t * @private\n\t\t */\n\t\tvar updateDuration = function (suppressEvents) {\n\t\t\t// update duration\n\t\t\tif (_durationUpdateMethod) {\n\t\t\t\tvar varname = \"duration\";\n\t\t\t\tif (changeOption(varname, _durationUpdateMethod.call(Scene)) && !suppressEvents) { // set\n\t\t\t\t\tScene.trigger(\"change\", {\n\t\t\t\t\t\twhat: varname,\n\t\t\t\t\t\tnewval: _options[varname]\n\t\t\t\t\t});\n\t\t\t\t\tScene.trigger(\"shift\", {\n\t\t\t\t\t\treason: varname\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Updates the position of the triggerElement, if present.\n\t\t * This method is called ...\n\t\t * - ... when the triggerElement is changed\n\t\t * - ... when the scene is added to a (new) controller\n\t\t * - ... in regular intervals from the controller through scene.refresh().\n\t\t * \n\t\t * @fires {@link Scene.shift}, if the position changed\n\t\t *\n\t\t * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.\n\t\t * @private\n\t\t */\n\t\tvar updateTriggerElementPosition = function (suppressEvents) {\n\t\t\tvar\n\t\t\telementPos = 0,\n\t\t\t\ttelem = _options.triggerElement;\n\t\t\tif (_controller && telem) {\n\t\t\t\tvar\n\t\t\t\tcontrollerInfo = _controller.info(),\n\t\t\t\t\tcontainerOffset = _util.get.offset(controllerInfo.container),\n\t\t\t\t\t// container position is needed because element offset is returned in relation to document, not in relation to container.\n\t\t\t\t\tparam = controllerInfo.vertical ? \"top\" : \"left\"; // which param is of interest ?\n\t\t\t\t// if parent is spacer, use spacer position instead so correct start position is returned for pinned elements.\n\t\t\t\twhile (telem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\n\t\t\t\t\ttelem = telem.parentNode;\n\t\t\t\t}\n\n\t\t\t\tvar elementOffset = _util.get.offset(telem);\n\n\t\t\t\tif (!controllerInfo.isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent\n\t\t\t\t\tcontainerOffset[param] -= _controller.scrollPos();\n\t\t\t\t}\n\n\t\t\t\telementPos = elementOffset[param] - containerOffset[param];\n\t\t\t}\n\t\t\tvar changed = elementPos != _triggerPos;\n\t\t\t_triggerPos = elementPos;\n\t\t\tif (changed && !suppressEvents) {\n\t\t\t\tScene.trigger(\"shift\", {\n\t\t\t\t\treason: \"triggerElementPosition\"\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Trigger a shift event, when the container is resized and the triggerHook is > 1.\n\t\t * @private\n\t\t */\n\t\tvar onContainerResize = function (e) {\n\t\t\tif (_options.triggerHook > 0) {\n\t\t\t\tScene.trigger(\"shift\", {\n\t\t\t\t\treason: \"containerResize\"\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tvar _validate = _util.extend(SCENE_OPTIONS.validate, {\n\t\t\t// validation for duration handled internally for reference to private var _durationMethod\n\t\t\tduration: function (val) {\n\t\t\t\tif (_util.type.String(val) && val.match(/^(\\.|\\d)*\\d+%$/)) {\n\t\t\t\t\t// percentage value\n\t\t\t\t\tvar perc = parseFloat(val) / 100;\n\t\t\t\t\tval = function () {\n\t\t\t\t\t\treturn _controller ? _controller.info(\"size\") * perc : 0;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (_util.type.Function(val)) {\n\t\t\t\t\t// function\n\t\t\t\t\t_durationUpdateMethod = val;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tval = parseFloat(_durationUpdateMethod());\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tval = -1; // will cause error below\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// val has to be float\n\t\t\t\tval = parseFloat(val);\n\t\t\t\tif (!_util.type.Number(val) || val < 0) {\n\t\t\t\t\tif (_durationUpdateMethod) {\n\t\t\t\t\t\t_durationUpdateMethod = undefined;\n\t\t\t\t\t\tthrow [\"Invalid return value of supplied function for option \\\"duration\\\":\", val];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow [\"Invalid value for option \\\"duration\\\":\", val];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn val;\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * Checks the validity of a specific or all options and reset to default if neccessary.\n\t\t * @private\n\t\t */\n\t\tvar validateOption = function (check) {\n\t\t\tcheck = arguments.length ? [check] : Object.keys(_validate);\n\t\t\tcheck.forEach(function (optionName, key) {\n\t\t\t\tvar value;\n\t\t\t\tif (_validate[optionName]) { // there is a validation method for this option\n\t\t\t\t\ttry { // validate value\n\t\t\t\t\t\tvalue = _validate[optionName](_options[optionName]);\n\t\t\t\t\t} catch (e) { // validation failed -> reset to default\n\t\t\t\t\t\tvalue = DEFAULT_OPTIONS[optionName];\n\t\t\t\t\t\tvar logMSG = _util.type.String(e) ? [e] : e;\n\t\t\t\t\t\tif (_util.type.Array(logMSG)) {\n\t\t\t\t\t\t\tlogMSG[0] = \"ERROR: \" + logMSG[0];\n\t\t\t\t\t\t\tlogMSG.unshift(1); // loglevel 1 for error msg\n\t\t\t\t\t\t\tlog.apply(this, logMSG);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlog(1, \"ERROR: Problem executing validation callback for option '\" + optionName + \"':\", e.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\t_options[optionName] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Helper used by the setter/getters for scene options\n\t\t * @private\n\t\t */\n\t\tvar changeOption = function (varname, newval) {\n\t\t\tvar\n\t\t\tchanged = false,\n\t\t\t\toldval = _options[varname];\n\t\t\tif (_options[varname] != newval) {\n\t\t\t\t_options[varname] = newval;\n\t\t\t\tvalidateOption(varname); // resets to default if necessary\n\t\t\t\tchanged = oldval != _options[varname];\n\t\t\t}\n\t\t\treturn changed;\n\t\t};\n\n\t\t// generate getters/setters for all options\n\t\tvar addSceneOption = function (optionName) {\n\t\t\tif (!Scene[optionName]) {\n\t\t\t\tScene[optionName] = function (newVal) {\n\t\t\t\t\tif (!arguments.length) { // get\n\t\t\t\t\t\treturn _options[optionName];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (optionName === \"duration\") { // new duration is set, so any previously set function must be unset\n\t\t\t\t\t\t\t_durationUpdateMethod = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (changeOption(optionName, newVal)) { // set\n\t\t\t\t\t\t\tScene.trigger(\"change\", {\n\t\t\t\t\t\t\t\twhat: optionName,\n\t\t\t\t\t\t\t\tnewval: _options[optionName]\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (SCENE_OPTIONS.shifts.indexOf(optionName) > -1) {\n\t\t\t\t\t\t\t\tScene.trigger(\"shift\", {\n\t\t\t\t\t\t\t\t\treason: optionName\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\treturn Scene;\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * **Get** or **Set** the duration option value.\n\t\t * As a setter it also accepts a function returning a numeric value. \n\t\t * This is particularly useful for responsive setups.\n\t\t *\n\t\t * The duration is updated using the supplied function every time `Scene.refresh()` is called, which happens periodically from the controller (see ScrollMagic.Controller option `refreshInterval`). \n\t\t * _**NOTE:** Be aware that it's an easy way to kill performance, if you supply a function that has high CPU demand. \n\t\t * Even for size and position calculations it is recommended to use a variable to cache the value. (see example) \n\t\t * This counts double if you use the same function for multiple scenes._\n\t\t *\n\t\t * @method ScrollMagic.Scene#duration\n\t\t * @example\n\t\t * // get the current duration value\n\t\t * var duration = scene.duration();\n\t\t *\n\t\t * // set a new duration\n\t\t * scene.duration(300);\n\t\t *\n\t\t * // use a function to automatically adjust the duration to the window height.\n\t\t * var durationValueCache;\n\t\t * function getDuration () {\n\t\t * return durationValueCache;\n\t\t * }\n\t\t * function updateDuration (e) {\n\t\t * durationValueCache = window.innerHeight;\n\t\t * }\n\t\t * $(window).on(\"resize\", updateDuration); // update the duration when the window size changes\n\t\t * $(window).triggerHandler(\"resize\"); // set to initial value\n\t\t * scene.duration(getDuration); // supply duration method\n\t\t *\n\t\t * @fires {@link Scene.change}, when used as setter\n\t\t * @fires {@link Scene.shift}, when used as setter\n\t\t * @param {(number|function)} [newDuration] - The new duration of the scene.\n\t\t * @returns {number} `get` - Current scene duration.\n\t\t * @returns {Scene} `set` - Parent object for chaining.\n\t\t */\n\n\t\t/**\n\t\t * **Get** or **Set** the offset option value.\n\t\t * @method ScrollMagic.Scene#offset\n\t\t * @example\n\t\t * // get the current offset\n\t\t * var offset = scene.offset();\n\t\t *\n\t\t * // set a new offset\n\t\t * scene.offset(100);\n\t\t *\n\t\t * @fires {@link Scene.change}, when used as setter\n\t\t * @fires {@link Scene.shift}, when used as setter\n\t\t * @param {number} [newOffset] - The new offset of the scene.\n\t\t * @returns {number} `get` - Current scene offset.\n\t\t * @returns {Scene} `set` - Parent object for chaining.\n\t\t */\n\n\t\t/**\n\t\t * **Get** or **Set** the triggerElement option value.\n\t\t * Does **not** fire `Scene.shift`, because changing the trigger Element doesn't necessarily mean the start position changes. This will be determined in `Scene.refresh()`, which is automatically triggered.\n\t\t * @method ScrollMagic.Scene#triggerElement\n\t\t * @example\n\t\t * // get the current triggerElement\n\t\t * var triggerElement = scene.triggerElement();\n\t\t *\n\t\t * // set a new triggerElement using a selector\n\t\t * scene.triggerElement(\"#trigger\");\n\t\t * // set a new triggerElement using a DOM object\n\t\t * scene.triggerElement(document.getElementById(\"trigger\"));\n\t\t *\n\t\t * @fires {@link Scene.change}, when used as setter\n\t\t * @param {(string|object)} [newTriggerElement] - The new trigger element for the scene.\n\t\t * @returns {(string|object)} `get` - Current triggerElement.\n\t\t * @returns {Scene} `set` - Parent object for chaining.\n\t\t */\n\n\t\t/**\n\t\t * **Get** or **Set** the triggerHook option value.\n\t\t * @method ScrollMagic.Scene#triggerHook\n\t\t * @example\n\t\t * // get the current triggerHook value\n\t\t * var triggerHook = scene.triggerHook();\n\t\t *\n\t\t * // set a new triggerHook using a string\n\t\t * scene.triggerHook(\"onLeave\");\n\t\t * // set a new triggerHook using a number\n\t\t * scene.triggerHook(0.7);\n\t\t *\n\t\t * @fires {@link Scene.change}, when used as setter\n\t\t * @fires {@link Scene.shift}, when used as setter\n\t\t * @param {(number|string)} [newTriggerHook] - The new triggerHook of the scene. See {@link Scene} parameter description for value options.\n\t\t * @returns {number} `get` - Current triggerHook (ALWAYS numerical).\n\t\t * @returns {Scene} `set` - Parent object for chaining.\n\t\t */\n\n\t\t/**\n\t\t * **Get** or **Set** the reverse option value.\n\t\t * @method ScrollMagic.Scene#reverse\n\t\t * @example\n\t\t * // get the current reverse option\n\t\t * var reverse = scene.reverse();\n\t\t *\n\t\t * // set new reverse option\n\t\t * scene.reverse(false);\n\t\t *\n\t\t * @fires {@link Scene.change}, when used as setter\n\t\t * @param {boolean} [newReverse] - The new reverse setting of the scene.\n\t\t * @returns {boolean} `get` - Current reverse option value.\n\t\t * @returns {Scene} `set` - Parent object for chaining.\n\t\t */\n\n\t\t/**\n\t\t * **Get** or **Set** the loglevel option value.\n\t\t * @method ScrollMagic.Scene#loglevel\n\t\t * @example\n\t\t * // get the current loglevel\n\t\t * var loglevel = scene.loglevel();\n\t\t *\n\t\t * // set new loglevel\n\t\t * scene.loglevel(3);\n\t\t *\n\t\t * @fires {@link Scene.change}, when used as setter\n\t\t * @param {number} [newLoglevel] - The new loglevel setting of the scene. `[0-3]`\n\t\t * @returns {number} `get` - Current loglevel.\n\t\t * @returns {Scene} `set` - Parent object for chaining.\n\t\t */\n\n\t\t/**\n\t\t * **Get** the associated controller.\n\t\t * @method ScrollMagic.Scene#controller\n\t\t * @example\n\t\t * // get the controller of a scene\n\t\t * var controller = scene.controller();\n\t\t *\n\t\t * @returns {ScrollMagic.Controller} Parent controller or `undefined`\n\t\t */\n\t\tthis.controller = function () {\n\t\t\treturn _controller;\n\t\t};\n\n\t\t/**\n\t\t * **Get** the current state.\n\t\t * @method ScrollMagic.Scene#state\n\t\t * @example\n\t\t * // get the current state\n\t\t * var state = scene.state();\n\t\t *\n\t\t * @returns {string} `\"BEFORE\"`, `\"DURING\"` or `\"AFTER\"`\n\t\t */\n\t\tthis.state = function () {\n\t\t\treturn _state;\n\t\t};\n\n\t\t/**\n\t\t * **Get** the current scroll offset for the start of the scene. \n\t\t * Mind, that the scrollOffset is related to the size of the container, if `triggerHook` is bigger than `0` (or `\"onLeave\"`). \n\t\t * This means, that resizing the container or changing the `triggerHook` will influence the scene's start offset.\n\t\t * @method ScrollMagic.Scene#scrollOffset\n\t\t * @example\n\t\t * // get the current scroll offset for the start and end of the scene.\n\t\t * var start = scene.scrollOffset();\n\t\t * var end = scene.scrollOffset() + scene.duration();\n\t\t * console.log(\"the scene starts at\", start, \"and ends at\", end);\n\t\t *\n\t\t * @returns {number} The scroll offset (of the container) at which the scene will trigger. Y value for vertical and X value for horizontal scrolls.\n\t\t */\n\t\tthis.scrollOffset = function () {\n\t\t\treturn _scrollOffset.start;\n\t\t};\n\n\t\t/**\n\t\t * **Get** the trigger position of the scene (including the value of the `offset` option). \n\t\t * @method ScrollMagic.Scene#triggerPosition\n\t\t * @example\n\t\t * // get the scene's trigger position\n\t\t * var triggerPosition = scene.triggerPosition();\n\t\t *\n\t\t * @returns {number} Start position of the scene. Top position value for vertical and left position value for horizontal scrolls.\n\t\t */\n\t\tthis.triggerPosition = function () {\n\t\t\tvar pos = _options.offset; // the offset is the basis\n\t\t\tif (_controller) {\n\t\t\t\t// get the trigger position\n\t\t\t\tif (_options.triggerElement) {\n\t\t\t\t\t// Element as trigger\n\t\t\t\t\tpos += _triggerPos;\n\t\t\t\t} else {\n\t\t\t\t\t// return the height of the triggerHook to start at the beginning\n\t\t\t\t\tpos += _controller.info(\"size\") * Scene.triggerHook();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pos;\n\t\t};\n\n\t\tvar\n\t\t_pin, _pinOptions;\n\n\t\tScene.on(\"shift.internal\", function (e) {\n\t\t\tvar durationChanged = e.reason === \"duration\";\n\t\t\tif ((_state === SCENE_STATE_AFTER && durationChanged) || (_state === SCENE_STATE_DURING && _options.duration === 0)) {\n\t\t\t\t// if [duration changed after a scene (inside scene progress updates pin position)] or [duration is 0, we are in pin phase and some other value changed].\n\t\t\t\tupdatePinState();\n\t\t\t}\n\t\t\tif (durationChanged) {\n\t\t\t\tupdatePinDimensions();\n\t\t\t}\n\t\t}).on(\"progress.internal\", function (e) {\n\t\t\tupdatePinState();\n\t\t}).on(\"add.internal\", function (e) {\n\t\t\tupdatePinDimensions();\n\t\t}).on(\"destroy.internal\", function (e) {\n\t\t\tScene.removePin(e.reset);\n\t\t});\n\t\t/**\n\t\t * Update the pin state.\n\t\t * @private\n\t\t */\n\t\tvar updatePinState = function (forceUnpin) {\n\t\t\tif (_pin && _controller) {\n\t\t\t\tvar\n\t\t\t\tcontainerInfo = _controller.info(),\n\t\t\t\t\tpinTarget = _pinOptions.spacer.firstChild; // may be pin element or another spacer, if cascading pins\n\t\t\t\tif (!forceUnpin && _state === SCENE_STATE_DURING) { // during scene or if duration is 0 and we are past the trigger\n\t\t\t\t\t// pinned state\n\t\t\t\t\tif (_util.css(pinTarget, \"position\") != \"fixed\") {\n\t\t\t\t\t\t// change state before updating pin spacer (position changes due to fixed collapsing might occur.)\n\t\t\t\t\t\t_util.css(pinTarget, {\n\t\t\t\t\t\t\t\"position\": \"fixed\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// update pin spacer\n\t\t\t\t\t\tupdatePinDimensions();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar\n\t\t\t\t\tfixedPos = _util.get.offset(_pinOptions.spacer, true),\n\t\t\t\t\t\t// get viewport position of spacer\n\t\t\t\t\t\tscrollDistance = _options.reverse || _options.duration === 0 ? containerInfo.scrollPos - _scrollOffset.start // quicker\n\t\t\t\t\t\t: Math.round(_progress * _options.duration * 10) / 10; // if no reverse and during pin the position needs to be recalculated using the progress\n\t\t\t\t\t// add scrollDistance\n\t\t\t\t\tfixedPos[containerInfo.vertical ? \"top\" : \"left\"] += scrollDistance;\n\n\t\t\t\t\t// set new values\n\t\t\t\t\t_util.css(_pinOptions.spacer.firstChild, {\n\t\t\t\t\t\ttop: fixedPos.top,\n\t\t\t\t\t\tleft: fixedPos.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// unpinned state\n\t\t\t\t\tvar\n\t\t\t\t\tnewCSS = {\n\t\t\t\t\t\tposition: _pinOptions.inFlow ? \"relative\" : \"absolute\",\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t},\n\t\t\t\t\t\tchange = _util.css(pinTarget, \"position\") != newCSS.position;\n\n\t\t\t\t\tif (!_pinOptions.pushFollowers) {\n\t\t\t\t\t\tnewCSS[containerInfo.vertical ? \"top\" : \"left\"] = _options.duration * _progress;\n\t\t\t\t\t} else if (_options.duration > 0) { // only concerns scenes with duration\n\t\t\t\t\t\tif (_state === SCENE_STATE_AFTER && parseFloat(_util.css(_pinOptions.spacer, \"padding-top\")) === 0) {\n\t\t\t\t\t\t\tchange = true; // if in after state but havent updated spacer yet (jumped past pin)\n\t\t\t\t\t\t} else if (_state === SCENE_STATE_BEFORE && parseFloat(_util.css(_pinOptions.spacer, \"padding-bottom\")) === 0) { // before\n\t\t\t\t\t\t\tchange = true; // jumped past fixed state upward direction\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// set new values\n\t\t\t\t\t_util.css(pinTarget, newCSS);\n\t\t\t\t\tif (change) {\n\t\t\t\t\t\t// update pin spacer if state changed\n\t\t\t\t\t\tupdatePinDimensions();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Update the pin spacer and/or element size.\n\t\t * The size of the spacer needs to be updated whenever the duration of the scene changes, if it is to push down following elements.\n\t\t * @private\n\t\t */\n\t\tvar updatePinDimensions = function () {\n\t\t\tif (_pin && _controller && _pinOptions.inFlow) { // no spacerresize, if original position is absolute\n\t\t\t\tvar\n\t\t\t\tafter = (_state === SCENE_STATE_AFTER),\n\t\t\t\t\tbefore = (_state === SCENE_STATE_BEFORE),\n\t\t\t\t\tduring = (_state === SCENE_STATE_DURING),\n\t\t\t\t\tvertical = _controller.info(\"vertical\"),\n\t\t\t\t\tpinTarget = _pinOptions.spacer.firstChild,\n\t\t\t\t\t// usually the pined element but can also be another spacer (cascaded pins)\n\t\t\t\t\tmarginCollapse = _util.isMarginCollapseType(_util.css(_pinOptions.spacer, \"display\")),\n\t\t\t\t\tcss = {};\n\n\t\t\t\t// set new size\n\t\t\t\t// if relsize: spacer -> pin | else: pin -> spacer\n\t\t\t\tif (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {\n\t\t\t\t\tif (during) {\n\t\t\t\t\t\t_util.css(_pin, {\n\t\t\t\t\t\t\t\"width\": _util.get.width(_pinOptions.spacer)\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_util.css(_pin, {\n\t\t\t\t\t\t\t\"width\": \"100%\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// minwidth is needed for cascaded pins.\n\t\t\t\t\tcss[\"min-width\"] = _util.get.width(vertical ? _pin : pinTarget, true, true);\n\t\t\t\t\tcss.width = during ? css[\"min-width\"] : \"auto\";\n\t\t\t\t}\n\t\t\t\tif (_pinOptions.relSize.height) {\n\t\t\t\t\tif (during) {\n\t\t\t\t\t\t// the only padding the spacer should ever include is the duration (if pushFollowers = true), so we need to substract that.\n\t\t\t\t\t\t_util.css(_pin, {\n\t\t\t\t\t\t\t\"height\": _util.get.height(_pinOptions.spacer) - (_pinOptions.pushFollowers ? _options.duration : 0)\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_util.css(_pin, {\n\t\t\t\t\t\t\t\"height\": \"100%\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// margin is only included if it's a cascaded pin to resolve an IE9 bug\n\t\t\t\t\tcss[\"min-height\"] = _util.get.height(vertical ? pinTarget : _pin, true, !marginCollapse); // needed for cascading pins\n\t\t\t\t\tcss.height = during ? css[\"min-height\"] : \"auto\";\n\t\t\t\t}\n\n\t\t\t\t// add space for duration if pushFollowers is true\n\t\t\t\tif (_pinOptions.pushFollowers) {\n\t\t\t\t\tcss[\"padding\" + (vertical ? \"Top\" : \"Left\")] = _options.duration * _progress;\n\t\t\t\t\tcss[\"padding\" + (vertical ? \"Bottom\" : \"Right\")] = _options.duration * (1 - _progress);\n\t\t\t\t}\n\t\t\t\t_util.css(_pinOptions.spacer, css);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Updates the Pin state (in certain scenarios)\n\t\t * If the controller container is not the document and we are mid-pin-phase scrolling or resizing the main document can result to wrong pin positions.\n\t\t * So this function is called on resize and scroll of the document.\n\t\t * @private\n\t\t */\n\t\tvar updatePinInContainer = function () {\n\t\t\tif (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info(\"isDocument\")) {\n\t\t\t\tupdatePinState();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Updates the Pin spacer size state (in certain scenarios)\n\t\t * If container is resized during pin and relatively sized the size of the pin might need to be updated...\n\t\t * So this function is called on resize of the container.\n\t\t * @private\n\t\t */\n\t\tvar updateRelativePinSpacer = function () {\n\t\t\tif (_controller && _pin && // well, duh\n\t\t\t_state === SCENE_STATE_DURING && // element in pinned state?\n\t\t\t( // is width or height relatively sized, but not in relation to body? then we need to recalc.\n\t\t\t((_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) && _util.get.width(window) != _util.get.width(_pinOptions.spacer.parentNode)) || (_pinOptions.relSize.height && _util.get.height(window) != _util.get.height(_pinOptions.spacer.parentNode)))) {\n\t\t\t\tupdatePinDimensions();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Is called, when the mousewhel is used while over a pinned element inside a div container.\n\t\t * If the scene is in fixed state scroll events would be counted towards the body. This forwards the event to the scroll container.\n\t\t * @private\n\t\t */\n\t\tvar onMousewheelOverPin = function (e) {\n\t\t\tif (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info(\"isDocument\")) { // in pin state\n\t\t\t\te.preventDefault();\n\t\t\t\t_controller._setScrollPos(_controller.info(\"scrollPos\") - ((e.wheelDelta || e[_controller.info(\"vertical\") ? \"wheelDeltaY\" : \"wheelDeltaX\"]) / 3 || -e.detail * 30));\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Pin an element for the duration of the tween. \n\t\t * If the scene duration is 0 the element will only be unpinned, if the user scrolls back past the start position. \n\t\t * Make sure only one pin is applied to an element at the same time.\n\t\t * An element can be pinned multiple times, but only successively.\n\t\t * _**NOTE:** The option `pushFollowers` has no effect, when the scene duration is 0._\n\t\t * @method ScrollMagic.Scene#setPin\n\t\t * @example\n\t\t * // pin element and push all following elements down by the amount of the pin duration.\n\t\t * scene.setPin(\"#pin\");\n\t\t *\n\t\t * // pin element and keeping all following elements in their place. The pinned element will move past them.\n\t\t * scene.setPin(\"#pin\", {pushFollowers: false});\n\t\t *\n\t\t * @param {(string|object)} element - A Selector targeting an element or a DOM object that is supposed to be pinned.\n\t\t * @param {object} [settings] - settings for the pin\n\t\t * @param {boolean} [settings.pushFollowers=true] - If `true` following elements will be \"pushed\" down for the duration of the pin, if `false` the pinned element will just scroll past them. \n\t\t Ignored, when duration is `0`.\n\t\t * @param {string} [settings.spacerClass=\"scrollmagic-pin-spacer\"] - Classname of the pin spacer element, which is used to replace the element.\n\t\t *\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.setPin = function (element, settings) {\n\t\t\tvar\n\t\t\tdefaultSettings = {\n\t\t\t\tpushFollowers: true,\n\t\t\t\tspacerClass: \"scrollmagic-pin-spacer\"\n\t\t\t};\n\t\t\tsettings = _util.extend({}, defaultSettings, settings);\n\n\t\t\t// validate Element\n\t\t\telement = _util.get.elements(element)[0];\n\t\t\tif (!element) {\n\t\t\t\tlog(1, \"ERROR calling method 'setPin()': Invalid pin element supplied.\");\n\t\t\t\treturn Scene; // cancel\n\t\t\t} else if (_util.css(element, \"position\") === \"fixed\") {\n\t\t\t\tlog(1, \"ERROR calling method 'setPin()': Pin does not work with elements that are positioned 'fixed'.\");\n\t\t\t\treturn Scene; // cancel\n\t\t\t}\n\n\t\t\tif (_pin) { // preexisting pin?\n\t\t\t\tif (_pin === element) {\n\t\t\t\t\t// same pin we already have -> do nothing\n\t\t\t\t\treturn Scene; // cancel\n\t\t\t\t} else {\n\t\t\t\t\t// kill old pin\n\t\t\t\t\tScene.removePin();\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t_pin = element;\n\n\t\t\tvar\n\t\t\tparentDisplay = _pin.parentNode.style.display,\n\t\t\t\tboundsParams = [\"top\", \"left\", \"bottom\", \"right\", \"margin\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"];\n\n\t\t\t_pin.parentNode.style.display = 'none'; // hack start to force css to return stylesheet values instead of calculated px values.\n\t\t\tvar\n\t\t\tinFlow = _util.css(_pin, \"position\") != \"absolute\",\n\t\t\t\tpinCSS = _util.css(_pin, boundsParams.concat([\"display\"])),\n\t\t\t\tsizeCSS = _util.css(_pin, [\"width\", \"height\"]);\n\t\t\t_pin.parentNode.style.display = parentDisplay; // hack end.\n\t\t\tif (!inFlow && settings.pushFollowers) {\n\t\t\t\tlog(2, \"WARNING: If the pinned element is positioned absolutely pushFollowers will be disabled.\");\n\t\t\t\tsettings.pushFollowers = false;\n\t\t\t}\n\t\t\twindow.setTimeout(function () { // wait until all finished, because with responsive duration it will only be set after scene is added to controller\n\t\t\t\tif (_pin && _options.duration === 0 && settings.pushFollowers) {\n\t\t\t\t\tlog(2, \"WARNING: pushFollowers =\", true, \"has no effect, when scene duration is 0.\");\n\t\t\t\t}\n\t\t\t}, 0);\n\n\t\t\t// create spacer and insert\n\t\t\tvar\n\t\t\tspacer = _pin.parentNode.insertBefore(document.createElement('div'), _pin),\n\t\t\t\tspacerCSS = _util.extend(pinCSS, {\n\t\t\t\t\tposition: inFlow ? \"relative\" : \"absolute\",\n\t\t\t\t\tboxSizing: \"content-box\",\n\t\t\t\t\tmozBoxSizing: \"content-box\",\n\t\t\t\t\twebkitBoxSizing: \"content-box\"\n\t\t\t\t});\n\n\t\t\tif (!inFlow) { // copy size if positioned absolutely, to work for bottom/right positioned elements.\n\t\t\t\t_util.extend(spacerCSS, _util.css(_pin, [\"width\", \"height\"]));\n\t\t\t}\n\n\t\t\t_util.css(spacer, spacerCSS);\n\t\t\tspacer.setAttribute(PIN_SPACER_ATTRIBUTE, \"\");\n\t\t\t_util.addClass(spacer, settings.spacerClass);\n\n\t\t\t// set the pin Options\n\t\t\t_pinOptions = {\n\t\t\t\tspacer: spacer,\n\t\t\t\trelSize: { // save if size is defined using % values. if so, handle spacer resize differently...\n\t\t\t\t\twidth: sizeCSS.width.slice(-1) === \"%\",\n\t\t\t\t\theight: sizeCSS.height.slice(-1) === \"%\",\n\t\t\t\t\tautoFullWidth: sizeCSS.width === \"auto\" && inFlow && _util.isMarginCollapseType(pinCSS.display)\n\t\t\t\t},\n\t\t\t\tpushFollowers: settings.pushFollowers,\n\t\t\t\tinFlow: inFlow,\n\t\t\t\t// stores if the element takes up space in the document flow\n\t\t\t};\n\n\t\t\tif (!_pin.___origStyle) {\n\t\t\t\t_pin.___origStyle = {};\n\t\t\t\tvar\n\t\t\t\tpinInlineCSS = _pin.style,\n\t\t\t\t\tcopyStyles = boundsParams.concat([\"width\", \"height\", \"position\", \"boxSizing\", \"mozBoxSizing\", \"webkitBoxSizing\"]);\n\t\t\t\tcopyStyles.forEach(function (val) {\n\t\t\t\t\t_pin.___origStyle[val] = pinInlineCSS[val] || \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// if relative size, transfer it to spacer and make pin calculate it...\n\t\t\tif (_pinOptions.relSize.width) {\n\t\t\t\t_util.css(spacer, {\n\t\t\t\t\twidth: sizeCSS.width\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (_pinOptions.relSize.height) {\n\t\t\t\t_util.css(spacer, {\n\t\t\t\t\theight: sizeCSS.height\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// now place the pin element inside the spacer\t\n\t\t\tspacer.appendChild(_pin);\n\t\t\t// and set new css\n\t\t\t_util.css(_pin, {\n\t\t\t\tposition: inFlow ? \"relative\" : \"absolute\",\n\t\t\t\tmargin: \"auto\",\n\t\t\t\ttop: \"auto\",\n\t\t\t\tleft: \"auto\",\n\t\t\t\tbottom: \"auto\",\n\t\t\t\tright: \"auto\"\n\t\t\t});\n\n\t\t\tif (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {\n\t\t\t\t_util.css(_pin, {\n\t\t\t\t\tboxSizing: \"border-box\",\n\t\t\t\t\tmozBoxSizing: \"border-box\",\n\t\t\t\t\twebkitBoxSizing: \"border-box\"\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// add listener to document to update pin position in case controller is not the document.\n\t\t\twindow.addEventListener('scroll', updatePinInContainer);\n\t\t\twindow.addEventListener('resize', updatePinInContainer);\n\t\t\twindow.addEventListener('resize', updateRelativePinSpacer);\n\t\t\t// add mousewheel listener to catch scrolls over fixed elements\n\t\t\t_pin.addEventListener(\"mousewheel\", onMousewheelOverPin);\n\t\t\t_pin.addEventListener(\"DOMMouseScroll\", onMousewheelOverPin);\n\n\t\t\tlog(3, \"added pin\");\n\n\t\t\t// finally update the pin to init\n\t\t\tupdatePinState();\n\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * Remove the pin from the scene.\n\t\t * @method ScrollMagic.Scene#removePin\n\t\t * @example\n\t\t * // remove the pin from the scene without resetting it (the spacer is not removed)\n\t\t * scene.removePin();\n\t\t *\n\t\t * // remove the pin from the scene and reset the pin element to its initial position (spacer is removed)\n\t\t * scene.removePin(true);\n\t\t *\n\t\t * @param {boolean} [reset=false] - If `false` the spacer will not be removed and the element's position will not be reset.\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.removePin = function (reset) {\n\t\t\tif (_pin) {\n\t\t\t\tif (_state === SCENE_STATE_DURING) {\n\t\t\t\t\tupdatePinState(true); // force unpin at position\n\t\t\t\t}\n\t\t\t\tif (reset || !_controller) { // if there's no controller no progress was made anyway...\n\t\t\t\t\tvar pinTarget = _pinOptions.spacer.firstChild; // usually the pin element, but may be another spacer (cascaded pins)...\n\t\t\t\t\tif (pinTarget.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // copy margins to child spacer\n\t\t\t\t\t\tvar\n\t\t\t\t\t\tstyle = _pinOptions.spacer.style,\n\t\t\t\t\t\t\tvalues = [\"margin\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"];\n\t\t\t\t\t\tmargins = {};\n\t\t\t\t\t\tvalues.forEach(function (val) {\n\t\t\t\t\t\t\tmargins[val] = style[val] || \"\";\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_util.css(pinTarget, margins);\n\t\t\t\t\t}\n\t\t\t\t\t_pinOptions.spacer.parentNode.insertBefore(pinTarget, _pinOptions.spacer);\n\t\t\t\t\t_pinOptions.spacer.parentNode.removeChild(_pinOptions.spacer);\n\t\t\t\t\tif (!_pin.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // if it's the last pin for this element -> restore inline styles\n\t\t\t\t\t\t// TODO: only correctly set for first pin (when cascading) - how to fix?\n\t\t\t\t\t\t_util.css(_pin, _pin.___origStyle);\n\t\t\t\t\t\tdelete _pin.___origStyle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twindow.removeEventListener('scroll', updatePinInContainer);\n\t\t\t\twindow.removeEventListener('resize', updatePinInContainer);\n\t\t\t\twindow.removeEventListener('resize', updateRelativePinSpacer);\n\t\t\t\t_pin.removeEventListener(\"mousewheel\", onMousewheelOverPin);\n\t\t\t\t_pin.removeEventListener(\"DOMMouseScroll\", onMousewheelOverPin);\n\t\t\t\t_pin = undefined;\n\t\t\t\tlog(3, \"removed pin (reset: \" + (reset ? \"true\" : \"false\") + \")\");\n\t\t\t}\n\t\t\treturn Scene;\n\t\t};\n\n\n\t\tvar\n\t\t_cssClasses, _cssClassElems = [];\n\n\t\tScene.on(\"destroy.internal\", function (e) {\n\t\t\tScene.removeClassToggle(e.reset);\n\t\t});\n\t\t/**\n\t\t * Define a css class modification while the scene is active. \n\t\t * When the scene triggers the classes will be added to the supplied element and removed, when the scene is over.\n\t\t * If the scene duration is 0 the classes will only be removed if the user scrolls back past the start position.\n\t\t * @method ScrollMagic.Scene#setClassToggle\n\t\t * @example\n\t\t * // add the class 'myclass' to the element with the id 'my-elem' for the duration of the scene\n\t\t * scene.setClassToggle(\"#my-elem\", \"myclass\");\n\t\t *\n\t\t * // add multiple classes to multiple elements defined by the selector '.classChange'\n\t\t * scene.setClassToggle(\".classChange\", \"class1 class2 class3\");\n\t\t *\n\t\t * @param {(string|object)} element - A Selector targeting one or more elements or a DOM object that is supposed to be modified.\n\t\t * @param {string} classes - One or more Classnames (separated by space) that should be added to the element during the scene.\n\t\t *\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.setClassToggle = function (element, classes) {\n\t\t\tvar elems = _util.get.elements(element);\n\t\t\tif (elems.length === 0 || !_util.type.String(classes)) {\n\t\t\t\tlog(1, \"ERROR calling method 'setClassToggle()': Invalid \" + (elems.length === 0 ? \"element\" : \"classes\") + \" supplied.\");\n\t\t\t\treturn Scene;\n\t\t\t}\n\t\t\tif (_cssClassElems.length > 0) {\n\t\t\t\t// remove old ones\n\t\t\t\tScene.removeClassToggle();\n\t\t\t}\n\t\t\t_cssClasses = classes;\n\t\t\t_cssClassElems = elems;\n\t\t\tScene.on(\"enter.internal_class leave.internal_class\", function (e) {\n\t\t\t\tvar toggle = e.type === \"enter\" ? _util.addClass : _util.removeClass;\n\t\t\t\t_cssClassElems.forEach(function (elem, key) {\n\t\t\t\t\ttoggle(elem, _cssClasses);\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn Scene;\n\t\t};\n\n\t\t/**\n\t\t * Remove the class binding from the scene.\n\t\t * @method ScrollMagic.Scene#removeClassToggle\n\t\t * @example\n\t\t * // remove class binding from the scene without reset\n\t\t * scene.removeClassToggle();\n\t\t *\n\t\t * // remove class binding and remove the changes it caused\n\t\t * scene.removeClassToggle(true);\n\t\t *\n\t\t * @param {boolean} [reset=false] - If `false` and the classes are currently active, they will remain on the element. If `true` they will be removed.\n\t\t * @returns {Scene} Parent object for chaining.\n\t\t */\n\t\tthis.removeClassToggle = function (reset) {\n\t\t\tif (reset) {\n\t\t\t\t_cssClassElems.forEach(function (elem, key) {\n\t\t\t\t\t_util.removeClass(elem, _cssClasses);\n\t\t\t\t});\n\t\t\t}\n\t\t\tScene.off(\"start.internal_class end.internal_class\");\n\t\t\t_cssClasses = undefined;\n\t\t\t_cssClassElems = [];\n\t\t\treturn Scene;\n\t\t};\n\n\t\t// INIT\n\t\tconstruct();\n\t\treturn Scene;\n\t};\n\n\t// store pagewide scene options\n\tvar SCENE_OPTIONS = {\n\t\tdefaults: {\n\t\t\tduration: 0,\n\t\t\toffset: 0,\n\t\t\ttriggerElement: undefined,\n\t\t\ttriggerHook: 0.5,\n\t\t\treverse: true,\n\t\t\tloglevel: 2\n\t\t},\n\t\tvalidate: {\n\t\t\toffset: function (val) {\n\t\t\t\tval = parseFloat(val);\n\t\t\t\tif (!_util.type.Number(val)) {\n\t\t\t\t\tthrow [\"Invalid value for option \\\"offset\\\":\", val];\n\t\t\t\t}\n\t\t\t\treturn val;\n\t\t\t},\n\t\t\ttriggerElement: function (val) {\n\t\t\t\tval = val || undefined;\n\t\t\t\tif (val) {\n\t\t\t\t\tvar elem = _util.get.elements(val)[0];\n\t\t\t\t\tif (elem) {\n\t\t\t\t\t\tval = elem;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow [\"Element defined in option \\\"triggerElement\\\" was not found:\", val];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn val;\n\t\t\t},\n\t\t\ttriggerHook: function (val) {\n\t\t\t\tvar translate = {\n\t\t\t\t\t\"onCenter\": 0.5,\n\t\t\t\t\t\"onEnter\": 1,\n\t\t\t\t\t\"onLeave\": 0\n\t\t\t\t};\n\t\t\t\tif (_util.type.Number(val)) {\n\t\t\t\t\tval = Math.max(0, Math.min(parseFloat(val), 1)); // make sure its betweeen 0 and 1\n\t\t\t\t} else if (val in translate) {\n\t\t\t\t\tval = translate[val];\n\t\t\t\t} else {\n\t\t\t\t\tthrow [\"Invalid value for option \\\"triggerHook\\\": \", val];\n\t\t\t\t}\n\t\t\t\treturn val;\n\t\t\t},\n\t\t\treverse: function (val) {\n\t\t\t\treturn !!val; // force boolean\n\t\t\t},\n\t\t\tloglevel: function (val) {\n\t\t\t\tval = parseInt(val);\n\t\t\t\tif (!_util.type.Number(val) || val < 0 || val > 3) {\n\t\t\t\t\tthrow [\"Invalid value for option \\\"loglevel\\\":\", val];\n\t\t\t\t}\n\t\t\t\treturn val;\n\t\t\t}\n\t\t},\n\t\t// holder for validation methods. duration validation is handled in 'getters-setters.js'\n\t\tshifts: [\"duration\", \"offset\", \"triggerHook\"],\n\t\t// list of options that trigger a `shift` event\n\t};\n/*\n * method used to add an option to ScrollMagic Scenes.\n * TODO: DOC (private for dev)\n */\n\tScrollMagic.Scene.addOption = function (name, defaultValue, validationCallback, shifts) {\n\t\tif (!(name in SCENE_OPTIONS.defaults)) {\n\t\t\tSCENE_OPTIONS.defaults[name] = defaultValue;\n\t\t\tSCENE_OPTIONS.validate[name] = validationCallback;\n\t\t\tif (shifts) {\n\t\t\t\tSCENE_OPTIONS.shifts.push(name);\n\t\t\t}\n\t\t} else {\n\t\t\tScrollMagic._util.log(1, \"[static] ScrollMagic.Scene -> Cannot add Scene option '\" + name + \"', because it already exists.\");\n\t\t}\n\t};\n\t// instance extension function for plugins\n\t// TODO: DOC (private for dev)\n\tScrollMagic.Scene.extend = function (extension) {\n\t\tvar oldClass = this;\n\t\tScrollMagic.Scene = function () {\n\t\t\toldClass.apply(this, arguments);\n\t\t\tthis.$super = _util.extend({}, this); // copy parent state\n\t\t\treturn extension.apply(this, arguments) || this;\n\t\t};\n\t\t_util.extend(ScrollMagic.Scene, oldClass); // copy properties\n\t\tScrollMagic.Scene.prototype = oldClass.prototype; // copy prototype\n\t\tScrollMagic.Scene.prototype.constructor = ScrollMagic.Scene; // restore constructor\n\t};\n\n\n\t/**\n\t * TODO: DOCS (private for dev)\n\t * @class\n\t * @private\n\t */\n\n\tScrollMagic.Event = function (type, namespace, target, vars) {\n\t\tvars = vars || {};\n\t\tfor (var key in vars) {\n\t\t\tthis[key] = vars[key];\n\t\t}\n\t\tthis.type = type;\n\t\tthis.target = this.currentTarget = target;\n\t\tthis.namespace = namespace || '';\n\t\tthis.timeStamp = this.timestamp = Date.now();\n\t\treturn this;\n\t};\n\n/*\n * TODO: DOCS (private for dev)\n */\n\n\tvar _util = ScrollMagic._util = (function (window) {\n\t\tvar U = {},\n\t\t\ti;\n\n\t\t/**\n\t\t * ------------------------------\n\t\t * internal helpers\n\t\t * ------------------------------\n\t\t */\n\n\t\t// parse float and fall back to 0.\n\t\tvar floatval = function (number) {\n\t\t\treturn parseFloat(number) || 0;\n\t\t};\n\t\t// get current style IE safe (otherwise IE would return calculated values for 'auto')\n\t\tvar _getComputedStyle = function (elem) {\n\t\t\treturn elem.currentStyle ? elem.currentStyle : window.getComputedStyle(elem);\n\t\t};\n\n\t\t// get element dimension (width or height)\n\t\tvar _dimension = function (which, elem, outer, includeMargin) {\n\t\t\telem = (elem === document) ? window : elem;\n\t\t\tif (elem === window) {\n\t\t\t\tincludeMargin = false;\n\t\t\t} else if (!_type.DomElement(elem)) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\twhich = which.charAt(0).toUpperCase() + which.substr(1).toLowerCase();\n\t\t\tvar dimension = (outer ? elem['offset' + which] || elem['outer' + which] : elem['client' + which] || elem['inner' + which]) || 0;\n\t\t\tif (outer && includeMargin) {\n\t\t\t\tvar style = _getComputedStyle(elem);\n\t\t\t\tdimension += which === 'Height' ? floatval(style.marginTop) + floatval(style.marginBottom) : floatval(style.marginLeft) + floatval(style.marginRight);\n\t\t\t}\n\t\t\treturn dimension;\n\t\t};\n\t\t// converts 'margin-top' into 'marginTop'\n\t\tvar _camelCase = function (str) {\n\t\t\treturn str.replace(/^[^a-z]+([a-z])/g, '$1').replace(/-([a-z])/g, function (g) {\n\t\t\t\treturn g[1].toUpperCase();\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * ------------------------------\n\t\t * external helpers\n\t\t * ------------------------------\n\t\t */\n\n\t\t// extend obj – same as jQuery.extend({}, objA, objB)\n\t\tU.extend = function (obj) {\n\t\t\tobj = obj || {};\n\t\t\tfor (i = 1; i < arguments.length; i++) {\n\t\t\t\tif (!arguments[i]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfor (var key in arguments[i]) {\n\t\t\t\t\tif (arguments[i].hasOwnProperty(key)) {\n\t\t\t\t\t\tobj[key] = arguments[i][key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\n\t\t// check if a css display type results in margin-collapse or not\n\t\tU.isMarginCollapseType = function (str) {\n\t\t\treturn [\"block\", \"flex\", \"list-item\", \"table\", \"-webkit-box\"].indexOf(str) > -1;\n\t\t};\n\n\t\t// implementation of requestAnimationFrame\n\t\t// based on https://gist.github.com/paulirish/1579671\n\t\tvar\n\t\tlastTime = 0,\n\t\t\tvendors = ['ms', 'moz', 'webkit', 'o'];\n\t\tvar _requestAnimationFrame = window.requestAnimationFrame;\n\t\tvar _cancelAnimationFrame = window.cancelAnimationFrame;\n\t\t// try vendor prefixes if the above doesn't work\n\t\tfor (i = 0; !_requestAnimationFrame && i < vendors.length; ++i) {\n\t\t\t_requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame'];\n\t\t\t_cancelAnimationFrame = window[vendors[i] + 'CancelAnimationFrame'] || window[vendors[i] + 'CancelRequestAnimationFrame'];\n\t\t}\n\n\t\t// fallbacks\n\t\tif (!_requestAnimationFrame) {\n\t\t\t_requestAnimationFrame = function (callback) {\n\t\t\t\tvar\n\t\t\t\tcurrTime = new Date().getTime(),\n\t\t\t\t\ttimeToCall = Math.max(0, 16 - (currTime - lastTime)),\n\t\t\t\t\tid = window.setTimeout(function () {\n\t\t\t\t\t\tcallback(currTime + timeToCall);\n\t\t\t\t\t}, timeToCall);\n\t\t\t\tlastTime = currTime + timeToCall;\n\t\t\t\treturn id;\n\t\t\t};\n\t\t}\n\t\tif (!_cancelAnimationFrame) {\n\t\t\t_cancelAnimationFrame = function (id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t\t}\n\t\tU.rAF = _requestAnimationFrame.bind(window);\n\t\tU.cAF = _cancelAnimationFrame.bind(window);\n\n\t\tvar\n\t\tloglevels = [\"error\", \"warn\", \"log\"],\n\t\t\tconsole = window.console || {};\n\n\t\tconsole.log = console.log ||\n\t\tfunction () {}; // no console log, well - do nothing then...\n\t\t// make sure methods for all levels exist.\n\t\tfor (i = 0; i < loglevels.length; i++) {\n\t\t\tvar method = loglevels[i];\n\t\t\tif (!console[method]) {\n\t\t\t\tconsole[method] = console.log; // prefer .log over nothing\n\t\t\t}\n\t\t}\n\t\tU.log = function (loglevel) {\n\t\t\tif (loglevel > loglevels.length || loglevel <= 0) loglevel = loglevels.length;\n\t\t\tvar now = new Date(),\n\t\t\t\ttime = (\"0\" + now.getHours()).slice(-2) + \":\" + (\"0\" + now.getMinutes()).slice(-2) + \":\" + (\"0\" + now.getSeconds()).slice(-2) + \":\" + (\"00\" + now.getMilliseconds()).slice(-3),\n\t\t\t\tmethod = loglevels[loglevel - 1],\n\t\t\t\targs = Array.prototype.splice.call(arguments, 1),\n\t\t\t\tfunc = Function.prototype.bind.call(console[method], console);\n\t\t\targs.unshift(time);\n\t\t\tfunc.apply(console, args);\n\t\t};\n\n\t\t/**\n\t\t * ------------------------------\n\t\t * type testing\n\t\t * ------------------------------\n\t\t */\n\n\t\tvar _type = U.type = function (v) {\n\t\t\treturn Object.prototype.toString.call(v).replace(/^\\[object (.+)\\]$/, \"$1\").toLowerCase();\n\t\t};\n\t\t_type.String = function (v) {\n\t\t\treturn _type(v) === 'string';\n\t\t};\n\t\t_type.Function = function (v) {\n\t\t\treturn _type(v) === 'function';\n\t\t};\n\t\t_type.Array = function (v) {\n\t\t\treturn Array.isArray(v);\n\t\t};\n\t\t_type.Number = function (v) {\n\t\t\treturn !_type.Array(v) && (v - parseFloat(v) + 1) >= 0;\n\t\t};\n\t\t_type.DomElement = function (o) {\n\t\t\treturn (\n\t\t\ttypeof HTMLElement === \"object\" ? o instanceof HTMLElement : //DOM2\n\t\t\to && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\");\n\t\t};\n\n\t\t/**\n\t\t * ------------------------------\n\t\t * DOM Element info\n\t\t * ------------------------------\n\t\t */\n\t\t// always returns a list of matching DOM elements, from a selector, a DOM element or an list of elements or even an array of selectors\n\t\tvar _get = U.get = {};\n\t\t_get.elements = function (selector) {\n\t\t\tvar arr = [];\n\t\t\tif (_type.String(selector)) {\n\t\t\t\ttry {\n\t\t\t\t\tselector = document.querySelectorAll(selector);\n\t\t\t\t} catch (e) { // invalid selector\n\t\t\t\t\treturn arr;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_type(selector) === 'nodelist' || _type.Array(selector)) {\n\t\t\t\tfor (var i = 0, ref = arr.length = selector.length; i < ref; i++) { // list of elements\n\t\t\t\t\tvar elem = selector[i];\n\t\t\t\t\tarr[i] = _type.DomElement(elem) ? elem : _get.elements(elem); // if not an element, try to resolve recursively\n\t\t\t\t}\n\t\t\t} else if (_type.DomElement(selector) || selector === document || selector === window) {\n\t\t\t\tarr = [selector]; // only the element\n\t\t\t}\n\t\t\treturn arr;\n\t\t};\n\t\t// get scroll top value\n\t\t_get.scrollTop = function (elem) {\n\t\t\treturn (elem && typeof elem.scrollTop === 'number') ? elem.scrollTop : window.pageYOffset || 0;\n\t\t};\n\t\t// get scroll left value\n\t\t_get.scrollLeft = function (elem) {\n\t\t\treturn (elem && typeof elem.scrollLeft === 'number') ? elem.scrollLeft : window.pageXOffset || 0;\n\t\t};\n\t\t// get element height\n\t\t_get.width = function (elem, outer, includeMargin) {\n\t\t\treturn _dimension('width', elem, outer, includeMargin);\n\t\t};\n\t\t// get element width\n\t\t_get.height = function (elem, outer, includeMargin) {\n\t\t\treturn _dimension('height', elem, outer, includeMargin);\n\t\t};\n\n\t\t// get element position (optionally relative to viewport)\n\t\t_get.offset = function (elem, relativeToViewport) {\n\t\t\tvar offset = {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t};\n\t\t\tif (elem && elem.getBoundingClientRect) { // check if available\n\t\t\t\tvar rect = elem.getBoundingClientRect();\n\t\t\t\toffset.top = rect.top;\n\t\t\t\toffset.left = rect.left;\n\t\t\t\tif (!relativeToViewport) { // clientRect is by default relative to viewport...\n\t\t\t\t\toffset.top += _get.scrollTop();\n\t\t\t\t\toffset.left += _get.scrollLeft();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn offset;\n\t\t};\n\n\t\t/**\n\t\t * ------------------------------\n\t\t * DOM Element manipulation\n\t\t * ------------------------------\n\t\t */\n\n\t\tU.addClass = function (elem, classname) {\n\t\t\tif (classname) {\n\t\t\t\tif (elem.classList) elem.classList.add(classname);\n\t\t\t\telse elem.className += ' ' + classname;\n\t\t\t}\n\t\t};\n\t\tU.removeClass = function (elem, classname) {\n\t\t\tif (classname) {\n\t\t\t\tif (elem.classList) elem.classList.remove(classname);\n\t\t\t\telse elem.className = elem.className.replace(new RegExp('(^|\\\\b)' + classname.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n\t\t\t}\n\t\t};\n\t\t// if options is string -> returns css value\n\t\t// if options is array -> returns object with css value pairs\n\t\t// if options is object -> set new css values\n\t\tU.css = function (elem, options) {\n\t\t\tif (_type.String(options)) {\n\t\t\t\treturn _getComputedStyle(elem)[_camelCase(options)];\n\t\t\t} else if (_type.Array(options)) {\n\t\t\t\tvar\n\t\t\t\tobj = {},\n\t\t\t\t\tstyle = _getComputedStyle(elem);\n\t\t\t\toptions.forEach(function (option, key) {\n\t\t\t\t\tobj[option] = style[_camelCase(option)];\n\t\t\t\t});\n\t\t\t\treturn obj;\n\t\t\t} else {\n\t\t\t\tfor (var option in options) {\n\t\t\t\t\tvar val = options[option];\n\t\t\t\t\tif (val == parseFloat(val)) { // assume pixel for seemingly numerical values\n\t\t\t\t\t\tval += 'px';\n\t\t\t\t\t}\n\t\t\t\t\telem.style[_camelCase(option)] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn U;\n\t}(window || {}));\n\n\tScrollMagic.Scene.prototype.addIndicators = function () {\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling addIndicators() due to missing Plugin \\'debug.addIndicators\\'. Please make sure to include plugins/debug.addIndicators.js');\n\t\treturn this;\n\t}\n\tScrollMagic.Scene.prototype.removeIndicators = function () {\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeIndicators() due to missing Plugin \\'debug.addIndicators\\'. Please make sure to include plugins/debug.addIndicators.js');\n\t\treturn this;\n\t}\n\tScrollMagic.Scene.prototype.setTween = function () {\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setTween() due to missing Plugin \\'animation.gsap\\'. Please make sure to include plugins/animation.gsap.js');\n\t\treturn this;\n\t}\n\tScrollMagic.Scene.prototype.removeTween = function () {\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeTween() due to missing Plugin \\'animation.gsap\\'. Please make sure to include plugins/animation.gsap.js');\n\t\treturn this;\n\t}\n\tScrollMagic.Scene.prototype.setVelocity = function () {\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setVelocity() due to missing Plugin \\'animation.velocity\\'. Please make sure to include plugins/animation.velocity.js');\n\t\treturn this;\n\t}\n\tScrollMagic.Scene.prototype.removeVelocity = function () {\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeVelocity() due to missing Plugin \\'animation.velocity\\'. Please make sure to include plugins/animation.velocity.js');\n\t\treturn this;\n\t}\n\n\treturn ScrollMagic;\n}));\n\n\n// WEBPACK FOOTER //\n// node_modules/scrollmagic/scrollmagic/uncompressed/ScrollMagic.js","!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var t;t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,t.hoverintent=e()}}(function(){return function e(t,n,o){function r(u,f){if(!n[u]){if(!t[u]){var s=\"function\"==typeof require&&require;if(!f&&s)return s(u,!0);if(i)return i(u,!0);var c=new Error(\"Cannot find module '\"+u+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var a=n[u]={exports:{}};t[u][0].call(a.exports,function(e){var n=t[u][1][e];return r(n||e)},a,a.exports,e,t,n,o)}return n[u].exports}for(var i=\"function\"==typeof require&&require,u=0;ui.innerWidth&&(s=i.innerWidth,l=i.innerHeight),{width:s,height:l}).width};p.doesItFit=function(t){var o,r,i,a,e=0===t.getAttribute(\"instance\")?e:m.throttleDelay;0,(o=function(){var e=t.getAttribute(\"instance\");for(n(t);d<=c&&0=v[e][v[e].length-1]&&y>m.breakPoint;)p.toMenu(t,e),y>m.breakPoint&&b(t,e,m.navDropdownLabel);v[e].length<1&&(t.querySelector(u).classList.remove(\"show\"),b(t,e,m.navDropdownLabel)),t.querySelector(s).children.length<1?(t.classList.add(\"is-empty\"),b(t,e,m.navDropdownBreakpointLabel)):t.classList.remove(\"is-empty\"),g(t,e)},r=e,function(){var e=this,t=arguments,n=i&&!a;clearTimeout(a),a=setTimeout(function(){a=null,i||o.apply(e,t)},r),n&&o.apply(e,t)})()};var g=function(e,t){v[t].length<1?(e.querySelector(a).classList.add(\"priority-nav-is-hidden\"),e.querySelector(a).classList.remove(\"priority-nav-is-visible\"),e.classList.remove(\"priority-nav-has-dropdown\"),e.querySelector(\".priority-nav__wrapper\").setAttribute(\"aria-haspopup\",\"false\")):(e.querySelector(a).classList.add(\"priority-nav-is-visible\"),e.querySelector(a).classList.remove(\"priority-nav-is-hidden\"),e.classList.add(\"priority-nav-has-dropdown\"),e.querySelector(\".priority-nav__wrapper\").setAttribute(\"aria-haspopup\",\"true\"))},r=function(e,t){e.querySelector(a).setAttribute(\"priorityNav-count\",v[t].length)},b=function(e,t,n){e.querySelector(a).innerHTML=n};p.toDropdown=function(e,t){e.querySelector(u).firstChild&&0\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add