yelda-webchat 1.1.13 → 1.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://YeldaChat/webpack/universalModuleDefinition","webpack://YeldaChat/webpack/bootstrap","webpack://YeldaChat/./node_modules/lg-zoom.js/dist/lg-zoom.js","webpack://YeldaChat/./node_modules/babel-runtime/regenerator/index.js","webpack://YeldaChat/./src/js/yeldaWebchatInjector.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_shared.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_ctx.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-dp.js","webpack://YeldaChat/./node_modules/babel-runtime/core-js/promise.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_an-object.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_global.js","webpack://YeldaChat/./node_modules/lg-video.js/dist/lg-video.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-keys-internal.js","webpack://YeldaChat/./src/config/index.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_species-constructor.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_is-object.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_has.js","webpack://YeldaChat/(webpack)/buildin/amd-define.js","webpack://YeldaChat/./node_modules/babel-runtime/helpers/asyncToGenerator.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_to-absolute-index.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_an-instance.js","webpack://YeldaChat/./node_modules/core-js/library/modules/es6.string.iterator.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_to-primitive.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_dom-create.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_to-object.js","webpack://YeldaChat/./node_modules/core-js/library/modules/es6.promise.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_defined.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_fails.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_iobject.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_invoke.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_iter-define.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_html.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-pie.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_hide.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_to-iobject.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_is-array-iter.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_to-integer.js","webpack://YeldaChat/./node_modules/babel-runtime/core-js/object/assign.js","webpack://YeldaChat/./node_modules/core-js/library/modules/es7.promise.finally.js","webpack://YeldaChat/./node_modules/core-js/library/modules/es7.promise.try.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_classof.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_task.js","webpack://YeldaChat/./node_modules/babel-runtime/helpers/extends.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_perform.js","webpack://YeldaChat/./node_modules/core-js/library/fn/object/define-property.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://YeldaChat/./node_modules/lightgallery.js/lib/js/lightgallery.js","webpack://YeldaChat/./node_modules/core-js/library/modules/es6.object.define-property.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_iterators.js","webpack://YeldaChat/./node_modules/babel-runtime/core-js/object/define-property.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_set-species.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_iter-detect.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-gpo.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_iter-step.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_wks.js","webpack://YeldaChat/./node_modules/core-js/library/fn/object/assign.js","webpack://YeldaChat/./node_modules/babel-runtime/helpers/createClass.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_shared-key.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_array-includes.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_core.js","webpack://YeldaChat/./node_modules/lg-share.js/dist/lg-share.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_redefine-all.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_export.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_uid.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_new-promise-capability.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_cof.js","webpack://YeldaChat/./node_modules/core-js/library/fn/promise.js","webpack://YeldaChat/./node_modules/core-js/library/modules/web.dom.iterable.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_string-at.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_a-function.js","webpack://YeldaChat/./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-dps.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://YeldaChat/./node_modules/babel-runtime/helpers/classCallCheck.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_iter-create.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_descriptors.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_redefine.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-assign.js","webpack://YeldaChat/./node_modules/regenerator-runtime/runtime.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-gops.js","webpack://YeldaChat/./node_modules/core-js/library/modules/es6.object.assign.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-create.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_for-of.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_microtask.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_property-desc.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_iter-call.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_to-length.js","webpack://YeldaChat/./node_modules/regenerator-runtime/runtime-module.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_library.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_user-agent.js","webpack://YeldaChat/./node_modules/core-js/library/modules/es6.array.iterator.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_object-keys.js","webpack://YeldaChat/./node_modules/lightgallery.js/lib/js/lg-utils.js","webpack://YeldaChat/./node_modules/mobile-detect/mobile-detect.js","webpack://YeldaChat/./node_modules/lg-fullscreen.js/dist/lg-fullscreen.js","webpack://YeldaChat/./node_modules/core-js/library/modules/_promise-resolve.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","m","r","e","n","t","o","i","f","u","a","Error","code","p","call","length","1","require","global","lgZoom","this","_extends","Object","assign","target","arguments","source","key","prototype","hasOwnProperty","zoomDefaults","scale","zoom","actualSize","enableZoomAfter","useLeftForZoom","useLeft","isChrome","navigator","userAgent","match","parseInt","Zoom","element","el","core","lgData","getAttribute","s","doCss","init","zoomabletimeout","pageX","innerWidth","pageY","innerHeight","document","documentElement","scrollTop","body","_this","zoomIcons","utils","addClass","outer","querySelector","insertAdjacentHTML","on","event","_speed","detail","delay","hasClass","removeClass","setTimeout","___slide","index","scaleVal","image","offsetX","clientWidth","offsetY","clientHeight","x","y","setVendor","setAttribute","parentElement","style","left","top","callScale","resetZoom","fromIcon","nw","w","dynamic","dynamicEl","width","naturalWidth","items","targetTouches","tapped","isTouch","clearTimeout","preventDefault","getElementById","zoomDrag","zoomSwipe","removeAttribute","j","startCoords","endCoords","isMoved","allowX","allowY","offsetHeight","offsetWidth","distanceX","distanceY","_el","Math","abs","k","touchendZoom","isDraging","scrollLeft","minY","maxY","minX","maxX","destroy","off","lgModules","yeldaChat","uri","value","re","RegExp","separator","indexOf","replace","url","vars","parameter","defaultValue","location","href","urlParameter","getUrlVars","parentContainer","webChatContainer","classList","createElement","appendChild","text","cssClass","webchatSettings","bubbleText","removeElement","assistantBubbleText","innerText","addCloseButtonForBubbleText","addEventListener","openChat","bind","closeButton","innerHTML","onclick","closeBubbleText","prepend","stopPropagation","bubbleContainer","remove","assistantImage","updateAssistantImageWithAssistantSettings","isVoiceFirstUI","customImage","hasCustomStyle","isDefaultStyle","iframeContainer","add","MobileDetect","mobile","mobileImage","addAssistantImageToWebChatContainer","data","chatUrl","updateQueryStringParameter","assistantId","assistantSlug","locale","platformSimulated","canBeClosed","shouldBeOpened","isAdmin","isStartBtn","isDemo","config","YELDA_PARAMETER","shoulBeOpened","cantBeClosed","getElementsByClassName","initWebChatContainerYActiveClass","iframe","webChatIframe","src","id","name","border","shareURL","facebookShareUrl","twitterShareUrl","pinterestShareUrl","mediaSource","getSharedUrlProperties","videoSources","urls","reduce","acc","html","cover","poster","eventData","message","FRAME_EVENT_TYPES","RECEIVED","OPEN_LIGHT_GALLERY","mediaSources","handleLightGallery","IS_SENDING_MESSAGE","dispatchEvent","CustomEvent","ADD_MINIMAL_NOTIFICATION_TEXT","configurationData","addAssistantBubbleText","OPEN_CHAT","CLOSE_CHAT","closeChat","ABSTAIN_LEAVE_VIEWPORT","listenLeaveViewport","LISTEN_LEAVE_VIEWPORT","LISTEN_URL_UPDATE","listenUrlUpdate","ABSTAIN_URL_UPDATE","ADD_BUBBLE_TEXT","lightgalleryContainer","dynamicElements","map","mediaDetails","getImageProperties","tweetText","pinterestText","lightGallery","googlePlus","yeldaContainerElement","assistantImgElement","contentWindow","postMessage","SENT","isOldIEVersion","messageEvent","eventHandler","messageListenerBind","messageListener","head","getElementsByTagName","yeldaCss","rel","type","crossorigin","media","webchatUrl","createWebChatURL","createWebChatFrame","resolve","unLoadChat","setupChat","settingId","assistantUrl","REGEX_HOST","STAGING","test","HOST","PRODUCTION","chatPath","setAssistantUrl","encodeURIComponent","yeldaParam","getUrlParam","bubbleContainerClone","bubbleContainerChildId","cloneNode","parentContainerId","CAN_BE_CLOSED_WITH_PARENT_ID","cssHref","sheets","styleSheets","isFound","sheetsLoop","sheet","rules","cssRules","selectorText","isYeldaCssInjector","APP_ENV_VALUES","isFallback","CHAT_BUBBLE_EXTERNAL_ENDPOINT","urlBase","getChatBubbleUrlBase","envQuery","env","getAppEnv","customTimeout","reject","xhr","XMLHttpRequest","getAssistantSettingsUrl","open","timeout","send","onreadystatechange","readyState","responseText","JSON","parse","getAssistantSettings","ontimeout","formatData","CHAT_BUBBLE_REQUEST_TIMEOUT","updateAssistantData","loadChat","currentHost","hostname","ALWAYS_ALLOWED_SITES_REGEX","isActivated","isDataOutdated","shouldChatBeLoaded","isStyleSheetLoaded","loadCssAsync","console","warn","createContainer","setUpChatIFrame","addAssistantImage","toggleFrameListener","removeEventListener","replaceWith","onload","webchatFrame","SEND_USER_MESSAGE","urlObserver","disconnect","previousUrl","MutationObserver","urlUpdateListener","observe","childList","subtree","err","URL_UPDATE","shouldRemoveEvent","viewportListenerBind","viewportListener","toElement","relatedTarget","LEAVE_VIEWPORT","SHARED","store","push","version","mode","copyright","aFunction","fn","that","b","c","apply","anObject","IE8_DOM_DEFINE","toPrimitive","dP","defineProperty","O","P","Attributes","TypeError","__esModule","isObject","it","self","Function","__g","lgVideo","videoDefaults","videoMaxWidth","youtubePlayerParams","vimeoPlayerParams","dailymotionPlayerParams","vkPlayerParams","videojs","videojsOptions","Video","videoLoaded","loadVideo","play","error","maxWidth","loadOnClick","$el","display","youtubePlayer","vimeoPlayer","dailymotionPlayer","html5Player","$f","api","_src","_html","_loadVideo","$tempImg","enableSwipe","enableDrag","$videoSlide","prevIndex","vkPlayer","pause","_isVideo","isVideo","youtube","vimeo","dailymotion","vk","noposter","videoTitle","video","autoplay","title","firstImage","param","html5","fL","substring","has","toIObject","arrayIndexOf","IE_PROTO","object","names","result","DEFAULT_PUBLICATION_STATUS","SPECIES","D","S","C","constructor","undefined","obj","_promise2","default","gen","step","arg","info","done","then","toInteger","max","min","Constructor","forbiddenField","$at","String","iterated","_t","_i","point","split","val","toString","valueOf","is","defined","empty","isThenable","notify","promise","isReject","_n","chain","_c","microtask","_v","ok","_s","run","reaction","exited","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","$reject","_d","_w","_a","slice","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","LIBRARY","ctx","classof","$export","anInstance","forOf","speciesConstructor","task","set","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","process","versions","v8","$Promise","isNode","newPromiseCapability","USE_NATIVE","FakePromise","exec","PromiseRejectionEvent","unhandled","isUnhandled","emit","onunhandledrejection","reason","v","onrejectionhandled","$resolve","wrapper","executor","onFulfilled","onRejected","G","W","F","Promise","capability","iter","all","iterable","values","remaining","$index","alreadyCalled","race","cof","propertyIsEnumerable","args","un","returnThis","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","VALUES","Base","NAME","next","DEFAULT","IS_SET","FORCED","getMethod","kind","proto","methods","IteratorPrototype","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","createDesc","IObject","ArrayProto","Array","ceil","floor","isNaN","R","onFinally","isFunction","callbackfn","promiseCapability","ARG","T","B","callee","queue","listener","defer","channel","port","invoke","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","nextTick","now","port2","port1","onmessage","importScripts","removeChild","clear","_assign2","$Object","desc","def","tag","stat","configurable","_lgUtils","_lgUtils2","_interopRequireDefault","params","bubbles","cancelable","evt","createEvent","initCustomEvent","Event","uid","defaults","cssEasing","easing","speed","height","startClass","backdropDuration","hideBarsDelay","ariaLabelledby","ariaDescribedby","closable","loop","escKey","keyPress","controls","slideEndAnimatoin","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selector","selectWithin","nextHtml","prevHtml","iframeMaxWidth","download","appendCounterTo","swipeThreshold","galleryId","Plugin","options","modules","lGalleryOn","lgBusy","hideBartimeout","querySelectorAll","children","_hash","hash","build","trigger","structure","slide","arrow","closeGallery","template","list","subHtmlCont","focus","setTop","inner","prevScrollTop","wH","lGallery","transition","support","addHtml","currentEle","subHtml","loadContent","rec","_img","_poster","_srcset","_sizes","_alt","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","splice","wWidth","alt","responsive","srcset","sizes","videoClass","picturefill","elements","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","downloadUrl","arrowDisable","touchPrev","touchNext","goToNextSlide","goToPrevSlide","keyCode","prev","setTranslate","xValue","yValue","touchMove","distance","touchEnd","opacity","manageSwipeClass","deltaY","mousedown","d","lguid","parentNode","DESCRIPTORS","KEY","get","SAFE_CLOSING","riter","from","skipClosing","safe","arr","toObject","ObjectProto","Symbol","USE_SYMBOL","_defineProperty2","defineProperties","props","descriptor","enumerable","writable","protoProps","staticProps","shared","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","__e","lgShare","shareSefaults","share","facebook","facebookDropdownText","twitter","twitterDropdownText","googlePlusDropdownText","pinterest","pinterestDropdownText","Share","shareHtml","shareButton","getSharePropsUrl","getShareProps","prop","shareProp","input","toLowerCase","group1","toUpperCase","PROTOTYPE","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","expProto","virtual","U","px","random","concat","PromiseCapability","$$resolve","$$reject","TO_STRING_TAG","DOMIterables","Collection","TO_STRING","pos","l","charCodeAt","charAt","getIteratorMethod","getKeys","Properties","instance","create","gOPS","pIE","$assign","A","K","forEach","join","aLen","getSymbols","isEnum","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","runtime","regeneratorRuntime","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","reverse","pop","Context","reset","skipTempReset","sent","_sent","delegate","method","tryEntries","resetTryEntry","stop","rootRecord","completion","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","complete","afterLoc","finish","thrown","delegateYield","resultName","nextLoc","state","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","previousPromise","callInvokeWithMethodAndArg","unwrapped","return","pushTryEntry","locs","iteratorMethod","getOwnPropertySymbols","Empty","dPs","enumBugKeys","createDict","iframeDocument","write","lt","close","isArrayIter","getIterFn","BREAK","RETURN","iterFn","macrotask","Observer","WebKitMutationObserver","flush","parent","last","standalone","toggle","node","createTextNode","characterData","bitmap","ret","g","hadRuntime","getOwnPropertyNames","oldRuntime","addToUnscopables","_k","Arguments","$keys","label","className","insertBefore","contains","property","customEvent","Listener","events","_id","_event","isArray","impl","fullPattern","shortPattern","tabletPattern","hasOwnProp","equalIC","containsIC","array","valueLC","len","convertPropsToRegExp","maxPhoneWidth","ua","substr","_cache","FALLBACK_PHONE","FALLBACK_TABLET","FALLBACK_MOBILE","verPos","mobileDetectRules","oss","phones","tablets","uas","oss0","WindowsPhoneOS","WindowsMobileOS","findMatch","findMatches","getVersionStr","propertyName","patterns","getVersion","prepareVersionNo","NaN","numbers","shift","Number","isMobileFallback","detectMobileBrowsers","isTabletFallback","prepareDetectionCache","cache","phone","tablet","phoneSized","isPhoneSized","mobileGrade","$isMobile","os","detectOS","getDeviceSmallerSide","screen","userAgents","versionStr","pattern","grade","_impl","lgFullscreen","fullscreenDefaults","fullScreen","isFullScreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","Fullscreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","fullscreen","getter","ns","moduleId"],"mappings":"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","file":"js/yeldaWebchatInjector.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"YeldaChat\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"YeldaChat\"] = factory();\n\telse\n\t\troot[\"YeldaChat\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// 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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"1AmZ\");\n","/**!\n * lg-zoom.js | 1.2.0 | May 20th 2020\n * http://sachinchoolur.github.io/lg-zoom.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgZoom = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof exports !== \"undefined\") {\n factory();\n } else {\n var mod = {\n exports: {}\n };\n factory();\n global.lgZoom = mod.exports;\n }\n})(this, function () {\n 'use strict';\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var getUseLeft = function getUseLeft() {\n var useLeft = false;\n var isChrome = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n if (isChrome && parseInt(isChrome[2], 10) < 54) {\n useLeft = true;\n }\n\n return useLeft;\n };\n\n var zoomDefaults = {\n scale: 1,\n zoom: true,\n actualSize: true,\n enableZoomAfter: 300,\n useLeftForZoom: getUseLeft()\n };\n\n var Zoom = function Zoom(element) {\n\n this.el = element;\n\n this.core = window.lgData[this.el.getAttribute('lg-uid')];\n this.core.s = _extends({}, zoomDefaults, this.core.s);\n\n if (this.core.s.zoom && this.core.doCss()) {\n this.init();\n\n // Store the zoomable timeout value just to clear it while closing\n this.zoomabletimeout = false;\n\n // Set the initial value center\n this.pageX = window.innerWidth / 2;\n this.pageY = window.innerHeight / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n }\n\n return this;\n };\n\n Zoom.prototype.init = function () {\n\n var _this = this;\n var zoomIcons = '<button aria-label=\"Zoom in\" id=\"lg-zoom-in\" class=\"lg-icon\"></button><button aria-label=\"Zoom out\" id=\"lg-zoom-out\" class=\"lg-icon\"></button>';\n\n if (_this.core.s.actualSize) {\n zoomIcons += '<button aria-label=\"Actual size\" id=\"lg-actual-size\" class=\"lg-icon\"></button>';\n }\n\n if (_this.core.s.useLeftForZoom) {\n utils.addClass(_this.core.outer, 'lg-use-left-for-zoom');\n } else {\n utils.addClass(_this.core.outer, 'lg-use-transition-for-zoom');\n }\n\n this.core.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', zoomIcons);\n\n // Add zoomable class\n utils.on(_this.core.el, 'onSlideItemLoad.lgtmzoom', function (event) {\n\n // delay will be 0 except first time\n var _speed = _this.core.s.enableZoomAfter + event.detail.delay;\n\n // set _speed value 0 if gallery opened from direct url and if it is first slide\n if (utils.hasClass(document.body, 'lg-from-hash') && event.detail.delay) {\n\n // will execute only once\n _speed = 0;\n } else {\n\n // Remove lg-from-hash to enable starting animation.\n utils.removeClass(document.body, 'lg-from-hash');\n }\n\n _this.zoomabletimeout = setTimeout(function () {\n utils.addClass(_this.core.___slide[event.detail.index], 'lg-zoomable');\n }, _speed + 30);\n });\n\n var scale = 1;\n /**\n * @desc Image zoom\n * Translate the wrap and scale the image to get better user experience\n *\n * @param {String} scaleVal - Zoom decrement/increment value\n */\n var zoom = function zoom(scaleVal) {\n\n var image = _this.core.outer.querySelector('.lg-current .lg-image');\n var _x;\n var _y;\n\n // Find offset manually to avoid issue after zoom\n var offsetX = (window.innerWidth - image.clientWidth) / 2;\n var offsetY = (window.innerHeight - image.clientHeight) / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n\n _x = _this.pageX - offsetX;\n _y = _this.pageY - offsetY;\n\n var x = (scaleVal - 1) * _x;\n var y = (scaleVal - 1) * _y;\n\n utils.setVendor(image, 'Transform', 'scale3d(' + scaleVal + ', ' + scaleVal + ', 1)');\n image.setAttribute('data-scale', scaleVal);\n\n if (_this.core.s.useLeftForZoom) {\n image.parentElement.style.left = -x + 'px';\n image.parentElement.style.top = -y + 'px';\n } else {\n utils.setVendor(image.parentElement, 'Transform', 'translate3d(-' + x + 'px, -' + y + 'px, 0)');\n }\n\n image.parentElement.setAttribute('data-x', x);\n image.parentElement.setAttribute('data-y', y);\n };\n\n var callScale = function callScale() {\n if (scale > 1) {\n utils.addClass(_this.core.outer, 'lg-zoomed');\n } else {\n _this.resetZoom();\n }\n\n if (scale < 1) {\n scale = 1;\n }\n\n zoom(scale);\n };\n\n var actualSize = function actualSize(event, image, index, fromIcon) {\n var w = image.clientWidth;\n var nw;\n if (_this.core.s.dynamic) {\n nw = _this.core.s.dynamicEl[index].width || image.naturalWidth || w;\n } else {\n nw = _this.core.items[index].getAttribute('data-width') || image.naturalWidth || w;\n }\n\n var _scale;\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n scale = 1;\n } else {\n if (nw > w) {\n _scale = nw / w;\n scale = _scale || 2;\n }\n }\n\n if (fromIcon) {\n _this.pageX = window.innerWidth / 2;\n _this.pageY = window.innerHeight / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n } else {\n _this.pageX = event.pageX || event.targetTouches[0].pageX;\n _this.pageY = event.pageY || event.targetTouches[0].pageY;\n }\n\n callScale();\n setTimeout(function () {\n utils.removeClass(_this.core.outer, 'lg-grabbing');\n utils.addClass(_this.core.outer, 'lg-grab');\n }, 10);\n };\n\n var tapped = false;\n\n // event triggered after appending slide content\n utils.on(_this.core.el, 'onAferAppendSlide.lgtmzoom', function (event) {\n\n var index = event.detail.index;\n\n // Get the current element\n var image = _this.core.___slide[index].querySelector('.lg-image');\n\n if (!_this.core.isTouch) {\n utils.on(image, 'dblclick', function (event) {\n actualSize(event, image, index);\n });\n }\n\n if (_this.core.isTouch) {\n utils.on(image, 'touchstart', function (event) {\n if (!tapped) {\n tapped = setTimeout(function () {\n tapped = null;\n }, 300);\n } else {\n clearTimeout(tapped);\n tapped = null;\n actualSize(event, image, index);\n }\n\n event.preventDefault();\n });\n }\n });\n\n // Update zoom on resize and orientationchange\n utils.on(window, 'resize.lgzoom scroll.lgzoom orientationchange.lgzoom', function () {\n _this.pageX = window.innerWidth / 2;\n _this.pageY = window.innerHeight / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n zoom(scale);\n });\n\n utils.on(document.getElementById('lg-zoom-out'), 'click.lg', function () {\n if (_this.core.outer.querySelector('.lg-current .lg-image')) {\n scale -= _this.core.s.scale;\n callScale();\n }\n });\n\n utils.on(document.getElementById('lg-zoom-in'), 'click.lg', function () {\n if (_this.core.outer.querySelector('.lg-current .lg-image')) {\n scale += _this.core.s.scale;\n callScale();\n }\n });\n\n utils.on(document.getElementById('lg-actual-size'), 'click.lg', function (event) {\n actualSize(event, _this.core.___slide[_this.core.index].querySelector('.lg-image'), _this.core.index, true);\n });\n\n // Reset zoom on slide change\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n scale = 1;\n _this.resetZoom();\n });\n\n // Drag option after zoom\n if (!_this.core.isTouch) {\n _this.zoomDrag();\n }\n\n if (_this.core.isTouch) {\n _this.zoomSwipe();\n }\n };\n\n // Reset zoom effect\n Zoom.prototype.resetZoom = function () {\n utils.removeClass(this.core.outer, 'lg-zoomed');\n for (var i = 0; i < this.core.___slide.length; i++) {\n if (this.core.___slide[i].querySelector('.lg-img-wrap')) {\n this.core.___slide[i].querySelector('.lg-img-wrap').removeAttribute('style');\n this.core.___slide[i].querySelector('.lg-img-wrap').removeAttribute('data-x');\n this.core.___slide[i].querySelector('.lg-img-wrap').removeAttribute('data-y');\n }\n }\n\n for (var j = 0; j < this.core.___slide.length; j++) {\n if (this.core.___slide[j].querySelector('.lg-image')) {\n this.core.___slide[j].querySelector('.lg-image').removeAttribute('style');\n this.core.___slide[j].querySelector('.lg-image').removeAttribute('data-scale');\n }\n }\n\n // Reset pagx pagy values to center\n this.pageX = window.innerWidth / 2;\n this.pageY = window.innerHeight / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n };\n\n Zoom.prototype.zoomSwipe = function () {\n var _this = this;\n var startCoords = {};\n var endCoords = {};\n var isMoved = false;\n\n // Allow x direction drag\n var allowX = false;\n\n // Allow Y direction drag\n var allowY = false;\n\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[i], 'touchstart.lg', function (e) {\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n var image = _this.core.___slide[_this.core.index].querySelector('.lg-object');\n\n allowY = image.offsetHeight * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientHeight;\n allowX = image.offsetWidth * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientWidth;\n if (allowX || allowY) {\n e.preventDefault();\n startCoords = {\n x: e.targetTouches[0].pageX,\n y: e.targetTouches[0].pageY\n };\n }\n }\n });\n }\n\n for (var j = 0; j < _this.core.___slide.length; j++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[j], 'touchmove.lg', function (e) {\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n\n var _el = _this.core.___slide[_this.core.index].querySelector('.lg-img-wrap');\n var distanceX;\n var distanceY;\n\n e.preventDefault();\n isMoved = true;\n\n endCoords = {\n x: e.targetTouches[0].pageX,\n y: e.targetTouches[0].pageY\n };\n\n // reset opacity and transition duration\n utils.addClass(_this.core.outer, 'lg-zoom-dragging');\n\n if (allowY) {\n distanceY = -Math.abs(_el.getAttribute('data-y')) + (endCoords.y - startCoords.y);\n } else {\n distanceY = -Math.abs(_el.getAttribute('data-y'));\n }\n\n if (allowX) {\n distanceX = -Math.abs(_el.getAttribute('data-x')) + (endCoords.x - startCoords.x);\n } else {\n distanceX = -Math.abs(_el.getAttribute('data-x'));\n }\n\n if (Math.abs(endCoords.x - startCoords.x) > 15 || Math.abs(endCoords.y - startCoords.y) > 15) {\n\n if (_this.core.s.useLeftForZoom) {\n _el.style.left = distanceX + 'px';\n _el.style.top = distanceY + 'px';\n } else {\n utils.setVendor(_el, 'Transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');\n }\n }\n }\n });\n }\n\n for (var k = 0; k < _this.core.___slide.length; k++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[k], 'touchend.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.core.outer, 'lg-zoom-dragging');\n _this.touchendZoom(startCoords, endCoords, allowX, allowY);\n }\n }\n });\n }\n };\n\n Zoom.prototype.zoomDrag = function () {\n\n var _this = this;\n var startCoords = {};\n var endCoords = {};\n var isDraging = false;\n var isMoved = false;\n\n // Allow x direction drag\n var allowX = false;\n\n // Allow Y direction drag\n var allowY = false;\n\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[i], 'mousedown.lgzoom', function (e) {\n\n // execute only on .lg-object\n var image = _this.core.___slide[_this.core.index].querySelector('.lg-object');\n\n allowY = image.offsetHeight * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientHeight;\n allowX = image.offsetWidth * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientWidth;\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n if (utils.hasClass(e.target, 'lg-object') && (allowX || allowY)) {\n e.preventDefault();\n startCoords = {\n x: e.pageX,\n y: e.pageY\n };\n\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.core.outer.scrollLeft += 1;\n _this.core.outer.scrollLeft -= 1;\n\n utils.removeClass(_this.core.outer, 'lg-grab');\n utils.addClass(_this.core.outer, 'lg-grabbing');\n }\n }\n });\n }\n\n utils.on(window, 'mousemove.lgzoom', function (e) {\n if (isDraging) {\n var _el = _this.core.___slide[_this.core.index].querySelector('.lg-img-wrap');\n var distanceX;\n var distanceY;\n\n isMoved = true;\n endCoords = {\n x: e.pageX,\n y: e.pageY\n };\n\n // reset opacity and transition duration\n utils.addClass(_this.core.outer, 'lg-zoom-dragging');\n\n if (allowY) {\n distanceY = -Math.abs(_el.getAttribute('data-y')) + (endCoords.y - startCoords.y);\n } else {\n distanceY = -Math.abs(_el.getAttribute('data-y'));\n }\n\n if (allowX) {\n distanceX = -Math.abs(_el.getAttribute('data-x')) + (endCoords.x - startCoords.x);\n } else {\n distanceX = -Math.abs(_el.getAttribute('data-x'));\n }\n\n if (_this.core.s.useLeftForZoom) {\n _el.style.left = distanceX + 'px';\n _el.style.top = distanceY + 'px';\n } else {\n utils.setVendor(_el, 'Transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');\n }\n }\n });\n\n utils.on(window, 'mouseup.lgzoom', function (e) {\n\n if (isDraging) {\n isDraging = false;\n utils.removeClass(_this.core.outer, 'lg-zoom-dragging');\n\n // Fix for chrome mouse move on click\n if (isMoved && (startCoords.x !== endCoords.x || startCoords.y !== endCoords.y)) {\n endCoords = {\n x: e.pageX,\n y: e.pageY\n };\n _this.touchendZoom(startCoords, endCoords, allowX, allowY);\n }\n\n isMoved = false;\n }\n\n utils.removeClass(_this.core.outer, 'lg-grabbing');\n utils.addClass(_this.core.outer, 'lg-grab');\n });\n };\n\n Zoom.prototype.touchendZoom = function (startCoords, endCoords, allowX, allowY) {\n\n var _this = this;\n var _el = _this.core.___slide[_this.core.index].querySelector('.lg-img-wrap');\n var image = _this.core.___slide[_this.core.index].querySelector('.lg-object');\n var distanceX = -Math.abs(_el.getAttribute('data-x')) + (endCoords.x - startCoords.x);\n var distanceY = -Math.abs(_el.getAttribute('data-y')) + (endCoords.y - startCoords.y);\n var minY = (_this.core.outer.querySelector('.lg').clientHeight - image.offsetHeight) / 2;\n var maxY = Math.abs(image.offsetHeight * Math.abs(image.getAttribute('data-scale')) - _this.core.outer.querySelector('.lg').clientHeight + minY);\n var minX = (_this.core.outer.querySelector('.lg').clientWidth - image.offsetWidth) / 2;\n var maxX = Math.abs(image.offsetWidth * Math.abs(image.getAttribute('data-scale')) - _this.core.outer.querySelector('.lg').clientWidth + minX);\n\n if (Math.abs(endCoords.x - startCoords.x) > 15 || Math.abs(endCoords.y - startCoords.y) > 15) {\n if (allowY) {\n if (distanceY <= -maxY) {\n distanceY = -maxY;\n } else if (distanceY >= -minY) {\n distanceY = -minY;\n }\n }\n\n if (allowX) {\n if (distanceX <= -maxX) {\n distanceX = -maxX;\n } else if (distanceX >= -minX) {\n distanceX = -minX;\n }\n }\n\n if (allowY) {\n _el.setAttribute('data-y', Math.abs(distanceY));\n } else {\n distanceY = -Math.abs(_el.getAttribute('data-y'));\n }\n\n if (allowX) {\n _el.setAttribute('data-x', Math.abs(distanceX));\n } else {\n distanceX = -Math.abs(_el.getAttribute('data-x'));\n }\n\n if (_this.core.s.useLeftForZoom) {\n _el.style.left = distanceX + 'px';\n _el.style.top = distanceY + 'px';\n } else {\n utils.setVendor(_el, 'Transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');\n }\n }\n };\n\n Zoom.prototype.destroy = function () {\n\n var _this = this;\n\n // Unbind all events added by lightGallery zoom plugin\n utils.off(_this.core.el, '.lgzoom');\n utils.off(window, '.lgzoom');\n for (var i = 0; i < _this.core.___slide.length; i++) {\n utils.off(_this.core.___slide[i], '.lgzoom');\n }\n\n utils.off(_this.core.el, '.lgtmzoom');\n _this.resetZoom();\n clearTimeout(_this.zoomabletimeout);\n _this.zoomabletimeout = false;\n };\n\n window.lgModules.zoom = Zoom;\n});\n\n},{}]},{},[1])(1)\n});\n","module.exports = require(\"regenerator-runtime\");\n","import '../css/yeldaWebchatInjector.css'\nimport MobileDetect from 'mobile-detect'\nimport 'lightgallery.js'\nimport 'lg-fullscreen.js'\nimport 'lg-zoom.js'\nimport 'lg-video.js'\nimport 'lg-share.js'\nimport 'lightgallery.js/dist/css/lightgallery.css'\nimport config from '../config'\n\nclass YeldaChat {\n /**\n * Updates the url with the given parameter and value\n * @param {String} uri\n * @param {String} key\n * @param {String} value\n */\n updateQueryStringParameter(uri, key, value) {\n const re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i')\n const separator = uri.indexOf('?') !== -1 ? '&' : '?'\n\n if (uri.match(re)) {\n return uri.replace(re, '$1' + key + '=' + value + '$2')\n } else {\n return uri + separator + key + '=' + value\n }\n }\n\n /**\n * gets all the url get parameters\n * @param {String} url current URL (document.location.href) or iframe parent url (document.referrer) if different from current location\n * @return {Object} key value list of GET parameters {parameterName: parameterValue}\n */\n getUrlVars(url) {\n const vars = {}\n url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(match, key, value) {\n vars[key] = value\n })\n\n return vars\n }\n\n /**\n * get Specific parameter from the url\n * @param {*} parameter\n * @param {*} defaultValue, default empty string\n * @return {String} urlParameter\n */\n getUrlParam(parameter, defaultValue = '', url = window.location.href) {\n let urlParameter = defaultValue\n\n if (url.indexOf(parameter) > -1) {\n urlParameter = this.getUrlVars(url)[parameter]\n }\n\n return urlParameter || defaultValue\n }\n\n /**\n * Create webChatContainer, which is the main div containing image and webchat elements\n * and add it to the DOM\n */\n createContainer() {\n // If the parentContainer (document.body) not loaded then do not proceed\n if (!this.parentContainer) {\n return null\n }\n\n // webChatContainer is the parent div to append the webchat iframe. It should not be created twice.\n if (this.webChatContainer) {\n return true\n }\n\n // add inner class and assistant image if the parentContainer is not document.body\n const classList = this.parentContainer === document.body ? 'yelda_container' : 'yelda_container inner'\n\n this.webChatContainer = document.createElement('div')\n this.webChatContainer.setAttribute('id', 'yelda_container')\n this.webChatContainer.setAttribute('class', classList)\n this.parentContainer.appendChild(this.webChatContainer)\n }\n\n /**\n * Create an assistantBubbleText component and add it to webChatContainer element\n * @param {String} text - default null\n * @param {String} cssClass - default ''\n */\n addAssistantBubbleText(text = null, cssClass = '') {\n text = text || this.webchatSettings && this.webchatSettings.bubbleText\n if (!this.webChatContainer || !text) {\n return\n }\n\n // Remove the assistant bubble text element before adding a new one\n this.removeElement('yelda_assistant_bubble_text')\n // create assistantBubbleText element and set the text\n this.assistantBubbleText = document.createElement('span')\n this.assistantBubbleText.setAttribute('id', 'yelda_assistant_bubble_text')\n this.assistantBubbleText.setAttribute('class', cssClass)\n this.assistantBubbleText.innerText = text\n this.addCloseButtonForBubbleText()\n\n // Add click event to assistant text\n this.assistantBubbleText.addEventListener('click', this.openChat.bind(this))\n\n // add assistant text to webChatContainer using the webchatSettings\n this.webChatContainer.appendChild(this.assistantBubbleText)\n }\n\n /**\n * Add close button for bubble text\n */\n addCloseButtonForBubbleText() {\n // Create close button and add it to the bubble text container\n const closeButton = document.createElement('a')\n closeButton.setAttribute('class', 'bubbleCloseButton')\n closeButton.setAttribute('id', 'yelda_assistant_bubble_text_close')\n closeButton.setAttribute('href', '#')\n closeButton.innerHTML = '&times;'\n closeButton.onclick = this.closeBubbleText.bind(this)\n this.assistantBubbleText.prepend(closeButton)\n }\n\n /**\n * Callback function for bubble text close button\n * @param {Event} event\n */\n closeBubbleText(event) {\n event.preventDefault()\n event.stopPropagation()\n this.removeElement('yelda_assistant_bubble_text')\n this.assistantBubbleText = null\n }\n\n /**\n * Create assistantImage element and add it to webChatContainer element\n */\n addAssistantImage() {\n if (!this.webChatContainer) {\n this.webChatContainer = document.getElementById('yelda_container')\n }\n\n // If it's already set up, keep it\n if (document.getElementById('yelda_assistant_img') !== null) {\n if (this.bubbleContainer) {\n document.getElementById('yelda_assistant_img').remove()\n } else {\n return\n }\n }\n\n // Assistant Image Creation\n this.assistantImage = document.createElement('div')\n\n // bubbleContainerChildId force the assistant image to be set in the bubbleContainer\n if (this.bubbleContainer) {\n this.assistantImage = this.bubbleContainer\n }\n\n // Assistant Image setup\n this.assistantImage.setAttribute('id', 'yelda_assistant_img')\n this.assistantImage.setAttribute('class', 'yelda_assistant_img default')\n this.assistantImage.innerHTML = '<i class=\"fas fa-comment\"></i>'\n\n // Add click event to assistant image\n this.assistantImage.addEventListener('click', this.openChat.bind(this))\n\n // add assistantImage to webChatContainer using the webchatSettings\n this.updateAssistantImageWithAssistantSettings()\n }\n\n /**\n * Add the assistantImage to the webChatContainer\n * Or update the webChatContainer element if the image is already added (bubbleContainerChildId param)\n */\n addAssistantImageToWebChatContainer() {\n if (this.bubbleContainer) {\n this.webChatContainer = this.assistantImage.parentElement\n return\n }\n\n this.webChatContainer.appendChild(this.assistantImage)\n }\n\n /**\n * Update assistantImage with assistant settings from backend if any\n */\n updateAssistantImageWithAssistantSettings() {\n if (!this.webChatContainer) {\n return\n }\n\n if (!this.webchatSettings) {\n this.addAssistantImageToWebChatContainer()\n return\n }\n\n const isVoiceFirstUI = this.webchatSettings.hasOwnProperty('isVoiceFirstUI')\n ? this.webchatSettings.isVoiceFirstUI\n : false\n const customImage = this.webchatSettings.image && this.webchatSettings.image.url\n const hasCustomStyle = this.webchatSettings.hasOwnProperty('isDefaultStyle') && !this.webchatSettings.isDefaultStyle\n\n /**\n * in isVoiceFirstUI mode\n * - the assistant should be opened directly and will never be closed\n * => we call directly openChat and do not add the assistant image\n * - we don't want the box-shadow css style\n * => we add voiceFirstUI to iframeContainer\n * - /chat vue render the voice first UI\n * => nothing more to do here\n */\n if (isVoiceFirstUI) {\n this.iframeContainer.classList.add('voiceFirstUI')\n this.openChat()\n this.assistantImage = null\n return\n }\n\n if (!hasCustomStyle || !customImage) {\n this.addAssistantImageToWebChatContainer()\n return\n }\n\n // If the device is mobile and mobile image url exists then use it\n const md = new MobileDetect(navigator.userAgent)\n const image = md.mobile() !== null && this.webchatSettings.mobileImage && this.webchatSettings.mobileImage.url\n ? this.webchatSettings.mobileImage.url\n : customImage\n\n this.assistantImage.classList.remove('default', 'custom')\n this.assistantImage.innerHTML = `<img src=\"${image}\" alt=\"assistant\">`\n this.assistantImage.classList.add('custom')\n\n this.addAssistantImageToWebChatContainer()\n }\n\n /**\n * Build webchat URL with necessary parameters\n * @param {String} url webchat url\n * @param {String} assistantId assistant id\n * @param {String} assistantSlug assistant slug\n * @return {String} url\n */\n createWebChatURL(data) {\n let url = data.chatUrl\n url = this.updateQueryStringParameter(url, 'assistantId', data.assistantId)\n url = this.updateQueryStringParameter(url, 'assistantSlug', data.assistantSlug)\n url = this.updateQueryStringParameter(url, 'locale', data.locale)\n url = this.updateQueryStringParameter(url, 'location', data.location)\n\n if (data.platformSimulated) {\n url = this.updateQueryStringParameter(url, 'platformSimulated', data.platformSimulated)\n }\n if (data.hasOwnProperty('canBeClosed')) {\n url = this.updateQueryStringParameter(url, 'canBeClosed', data.canBeClosed)\n }\n\n if (data.hasOwnProperty('shouldBeOpened')) {\n url = this.updateQueryStringParameter(url, 'shouldBeOpened', data.shouldBeOpened)\n }\n\n if (data.isAdmin) {\n url = this.updateQueryStringParameter(url, 'isAdmin', data.isAdmin)\n }\n\n if (data.isStartBtn) {\n url = this.updateQueryStringParameter(url, 'isStartBtn', data.isAdmin && data.isStartBtn)\n }\n\n if (data.isDemo) {\n url = this.updateQueryStringParameter(url, 'isDemo', data.isDemo)\n }\n\n if (data.hasOwnProperty(config.YELDA_PARAMETER)) {\n url = this.updateQueryStringParameter(url, config.YELDA_PARAMETER, data[config.YELDA_PARAMETER])\n }\n\n return url\n }\n\n /**\n * Add 'y_active' class to the webChatContainer if required\n *\n * To control the opacity/display of the iframe container (.yelda_iframe_container) and the assistant image (.yelda_assistant_img),\n * We add and remove the \"y_active\" CSS class to the webChatContainer (.yelda_container) which is always visible\n * By default\n * - yelda_iframe_container is hidden (opacity: 0; height:0; width: 0; to not affect page interactions)\n * - assistant image is hidden (opacity: 0), but immediatly animated by css to be displayed (opacity: 1 with animation-name: appear;) for yelda_assistant_img)\n *\n * When we add the class \"y_active\" to (webChatContainer)\n * - yelda_iframe_container is now visible (.y_active .yelda_iframe_container => opacity: 1)\n * - the assistant image is hidden (.yelda_container.y_active .yelda_assistant_img => display:none, no opacity manipulation because no need of animation)\n *\n * @param {Boolean} data.shouldBeOpened\n * @param {Boolean} data.isStartBtn\n * @param {Boolean} data.canBeClosed\n */\n initWebChatContainerYActiveClass(data) {\n // should be opened on load OR has a start button\n const shoulBeOpened = data.shouldBeOpened || data.isStartBtn\n\n // cannot be closed (canBeClosed explicitly set to false)\n const cantBeClosed = data.hasOwnProperty('canBeClosed') && !data.canBeClosed\n\n /**\n * If we are sure that the webchat should be opened from the creation and displayed all the time\n * we add the y_active class to webChatContainer at the creation\n *\n * Otherwise yelda_assistant_img click event management will take care of showing and hiding the webchat\n * - closeChat() remove \"y_active\" from the yelda container\n * - openChat() add y_active\" to the yelda container\n */\n if (shoulBeOpened && cantBeClosed) {\n this.webChatContainer.classList.add('y_active')\n }\n }\n\n /**\n * Create iframeContainer and it's child webchat iframe, and add it to webChatContainer\n * @param {String} url webchat url\n * @param {Boolean} data.shouldBeOpened\n * @param {Boolean} data.isStartBtn\n * @param {Boolean} data.canBeClosed\n * @return {Element} iframe HTML element\n */\n createWebChatFrame(url, data) {\n if (!this.webChatContainer) {\n this.webChatContainer = document.getElementsByClassName('yelda_container')[0]\n }\n\n // Iframe creation\n // Parent div to contain the iframe. To allow css animation on iframe\n if (!this.iframeContainer) {\n let classList = 'yelda_iframe_container'\n\n this.iframeContainer = document.createElement('div')\n this.iframeContainer.setAttribute('id', 'yelda_iframe_container')\n\n // Add the inner class that controls the position of the iframe container if the parent container is not document.body\n if (this.parentContainer !== document.body) {\n classList += ' inner'\n }\n\n this.initWebChatContainerYActiveClass(data)\n\n this.iframeContainer.setAttribute('class', classList)\n this.webChatContainer.appendChild(this.iframeContainer)\n }\n\n let iframe\n\n if (!this.webChatIframe) {\n iframe = document.createElement('iframe')\n iframe.src = url\n iframe.id = 'web_chat_frame'\n iframe.name = 'frame'\n iframe.style.border = '0'\n iframe.setAttribute('allow', 'microphone;')\n iframe.setAttribute('allowfullscreen', 'true')\n iframe.setAttribute('webkitallowfullscreen', 'true')\n iframe.setAttribute('mozallowfullscreen', 'true')\n this.iframeContainer.appendChild(iframe)\n } else {\n iframe = document.getElementById('web_chat_frame')\n }\n\n return iframe\n }\n\n /**\n * Format object with social media shareUrl\n * @param {String} shareUrl url to share\n * @return {Object} shareUrl properties { facebookShareUrl, twitterShareUrl, pinterestShareUrl }\n */\n getSharedUrlProperties(shareURL) {\n return {\n facebookShareUrl: shareURL,\n twitterShareUrl: shareURL,\n pinterestShareUrl: shareURL\n }\n }\n\n /**\n * Get Image related properties for lightGallery\n * @param {String} mediaSource image url\n * @return {Object} object of image needed properties {src, href, facebookShareUrl, twitterShareUrl, pinterestShareUrl }\n */\n getImageProperties(mediaSource) {\n return {\n src: mediaSource,\n href: mediaSource,\n ...this.getSharedUrlProperties(mediaSource) // { facebookShareUrl, twitterShareUrl, pinterestShareUrl }\n }\n }\n\n /**\n * Get Video related properties for lightGallery\n * @param {Object} mediaSource video properties\n * @param {Array<String>} mediaSource.urls videos urls\n * @param {String | null} mediaSource.cover image cover, optional\n * @return {Object} object of video needed properties {html, href, facebookShareUrl, twitterShareUrl, pinterestShareUrl }\n */\n getVideoProperties(mediaSource) {\n const videoSources = mediaSource.urls.reduce((acc, url) => {\n return `${acc}<source src=\"${url}\"></source>`\n }, '')\n\n return {\n html: `<video class=\"lg-video-object lg-html5\" controls=\"true\" preload=\"none\">${videoSources}</video>`,\n href: mediaSource.urls[0],\n ...(mediaSource.cover && {\n poster: mediaSource.cover // optional video cover preview\n }),\n ...this.getSharedUrlProperties(mediaSource.urls[0]) // { facebookShareUrl, twitterShareUrl, pinterestShareUrl }\n }\n }\n\n /**\n * Handles communication between parent window and iframe, mainly for open and closing the chat\n * handles also the chat bubble style\n * @param {event} event\n */\n messageListener(event) {\n // event.message is only there to support IE11.\n const eventData = event.data || event.message\n if (!eventData) {\n return\n }\n\n /*\n * Simple event management parent.postMessage('string message')\n */\n if (!eventData.event) {\n switch(eventData) {\n case config.FRAME_EVENT_TYPES.RECEIVED.OPEN_CHAT:\n // 'openChat' event triggered from webchat\n this.openChat()\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.CLOSE_CHAT:\n // 'closeChat' event triggered from webchat\n this.closeChat()\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.ABSTAIN_LEAVE_VIEWPORT:\n // 'abstainLeaveViewport' event triggered from webchat to stop listening to the leave viewport event\n this.listenLeaveViewport(true)\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.LISTEN_LEAVE_VIEWPORT:\n // Triggered from webchat to listen leave viewport event\n this.listenLeaveViewport()\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.LISTEN_URL_UPDATE:\n // Triggered from webchat to listen for url update\n this.listenUrlUpdate()\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.ABSTAIN_URL_UPDATE:\n // Triggered form webchat to stop listening for url update\n this.listenUrlUpdate(true)\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.ADD_BUBBLE_TEXT:\n // Triggered from webchat to add assistant bubble text if possible\n if (!this.configurationData.hasOwnProperty('canBeClosed') || this.configurationData.canBeClosed) {\n this.addAssistantBubbleText()\n }\n break;\n }\n return\n }\n\n /*\n * Complex event management parent.postMessage({ event: 'xxxx', data: yyyy })\n */\n switch(eventData.event) {\n case config.FRAME_EVENT_TYPES.RECEIVED.OPEN_LIGHT_GALLERY:\n if (!eventData.mediaSources || !eventData.mediaSources.length) {\n return\n }\n\n this.handleLightGallery(eventData)\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.IS_SENDING_MESSAGE:\n /**\n * Custom event to send to Yelda to keep track of the webchat ability to receive a new message\n * If isSendingMessage data is true, it means that a user message has already been sent to the webchat and\n * is still waiting for an answer\n * If isSendingMessage data is false, the webchat is ready to receive new user messages\n */\n if (eventData.hasOwnProperty('data')) {\n window.dispatchEvent(new CustomEvent('isSendingMessage', { detail: eventData.data }))\n }\n break\n case config.FRAME_EVENT_TYPES.RECEIVED.ADD_MINIMAL_NOTIFICATION_TEXT:\n if (!this.configurationData.hasOwnProperty('canBeClosed') || this.configurationData.canBeClosed) {\n this.addAssistantBubbleText(eventData.text, 'y_notification')\n }\n break;\n }\n }\n\n /**\n * Create DynamicElements & Opens Light Gallery from the received mediaSources\n * @param {Object} data - iframe data sent from webchat window\n * @param {Array<String | Object>} data.mediaSources - Array of source for image or video\n */\n handleLightGallery(data) {\n // Get lightgallery container\n let lightgalleryContainer = document.getElementById('lightgallery')\n\n // If lightgalleryContainer does not exit, then create it\n if (!lightgalleryContainer) {\n lightgalleryContainer = document.createElement('div')\n lightgalleryContainer.id = 'lightgallery'\n document.getElementById('yelda_iframe_container').appendChild(lightgalleryContainer)\n }\n\n // Create dynamic Elements from the mediaSources for the lightgallery\n const dynamicElements = data.mediaSources.map(mediaSource => {\n let mediaDetails = {}\n\n // For image the mediaSource is a simple string\n if (typeof mediaSource === 'string') {\n mediaDetails = this.getImageProperties(mediaSource)\n } else if (mediaSource.urls && mediaSource.urls.length) {\n // For video mediaSource will be object {urls: {Array<String>}, cover: {String}}\n mediaDetails = this.getImageProperties(mediaSource)\n }\n\n return {\n tweetText: '', // Empty string used to avoid undefined message showed in the twitter share window\n pinterestText: '',\n ...mediaDetails\n }\n })\n\n // Open Light gallery\n window.lightGallery(lightgalleryContainer, {\n googlePlus: false, // Don't show the googlePlus share button\n dynamic: true,\n dynamicEl: dynamicElements,\n index: data.index || 0 // Opens directly the clicked image/video or the first element in gallery\n })\n\n // Clean the light gallery on close\n lightgalleryContainer.addEventListener('onCloseAfter', function() {\n lightgalleryContainer.remove()\n })\n }\n\n /**\n * Close the webchat window\n */\n closeChat() {\n // Closing the webchat = remove the y_active class on #yelda_container\n // Hiding the iframe + showing back the bubble + animation => All is done in CSS\n const yeldaContainerElement = document.getElementById('yelda_container')\n if (yeldaContainerElement !== null) {\n yeldaContainerElement.classList.remove('y_active')\n }\n }\n\n /**\n * Open the webchat window\n */\n openChat() {\n // Adding the class \"activated\" allows the CSS to change the transition/animation after the first opening\n const assistantImgElement = document.getElementById('yelda_assistant_img')\n if (assistantImgElement !== null) {\n assistantImgElement.classList.add('activated')\n }\n\n // Opening the webchat = adding the y_active class on #yelda_container\n // Showing the iframe + hiding bubble + hiding minimal notification + animation => All is done in CSS\n const yeldaContainerElement = document.getElementById('yelda_container')\n if (yeldaContainerElement !== null) {\n yeldaContainerElement.classList.add('y_active')\n }\n\n // Hide the assistant bubble text while opening the webchat window\n // Note : bubble text container is also hidden in CSS\n if (this.assistantBubbleText) {\n this.assistantBubbleText = null\n }\n\n // Remove assistant bubble text while opening the webchat window\n this.removeElement('yelda_assistant_bubble_text')\n\n // Propagate the event to the webchat\n document.getElementById('web_chat_frame').contentWindow.postMessage(config.FRAME_EVENT_TYPES.SENT.OPEN_CHAT, '*')\n }\n\n /**\n * Attach or remove the event listener\n *\n * @param {Boolean} remove - If we are removing the event listener\n */\n toggleFrameListener(remove = false) {\n const isOldIEVersion = !window.addEventListener\n\n const addEventMethod = isOldIEVersion ? 'attachEvent' : 'addEventListener'\n const removeEventMethod = isOldIEVersion ? 'detachEvent' : 'removeEventListener'\n const messageEvent = isOldIEVersion ? 'onmessage' : 'message'\n\n const eventHandler = window[remove ? removeEventMethod : addEventMethod]\n\n // To make removeEventListener to work do not reassign messageListenerBind\n if (!this.messageListenerBind) {\n this.messageListenerBind = this.messageListener.bind(this)\n }\n eventHandler(messageEvent, this.messageListenerBind)\n }\n\n /**\n * Load CSS asynchronously\n */\n loadCssAsync() {\n const head = document.getElementsByTagName('head')[0]\n const yeldaCss = document.createElement('link')\n yeldaCss.rel = 'stylesheet'\n yeldaCss.type = 'text/css'\n yeldaCss.crossorigin = 'anonymous'\n yeldaCss.href = 'https://yelda-webchat.s3.eu-west-3.amazonaws.com/css/yeldaWebchatInjector.min.css'\n yeldaCss.media = 'all'\n head.appendChild(yeldaCss)\n }\n\n /**\n * Generate webchatURL and create webchatIframe\n * @param {Object} data { chatUrl, assistantId, assistantSlug, shouldBeOpened, isStartBtn, canBeClosed }\n */\n setUpChatIFrame(data) {\n const webchatUrl = this.createWebChatURL(data)\n this.webChatIframe = this.createWebChatFrame(webchatUrl, data)\n }\n\n /**\n * Delete old webchat element and create new webchat\n * @param {Object} data { data.assistantUrl, data.chatPath }\n * @param {Element} container webchat container\n * @returns {Promise}\n */\n resetChat(data) {\n return new Promise(async resolve => {\n this.unLoadChat()\n\n if (data) {\n await this.setupChat(data)\n }\n resolve()\n })\n }\n\n /**\n * Update data object with assistantId, assistantSlug and locale if needed\n * @param {Object} data { data.assistantUrl, data.chatPath }\n * @param {Object} webchatSettings webchat settings from DB\n * @param {Object} data\n */\n updateAssistantData(data, webchatSettings) {\n if (!data.settingId || !webchatSettings || !webchatSettings.assistantSlug) {\n return data\n }\n\n data.assistantId = webchatSettings.assistantId\n data.assistantSlug = webchatSettings.assistantSlug\n data.locale = webchatSettings.locale\n\n return data\n }\n\n /**\n * Return assistantUrl from param or deduced from href\n * @param {String} assistantUrl can be undefined\n * @param {String} href window.location.href\n * @return {String} assistantUrl\n */\n setAssistantUrl(assistantUrl, href) {\n if (assistantUrl) {\n return assistantUrl.replace(/\\/$/, '')\n }\n\n const host = config.REGEX_HOST.STAGING.test(href) ? config.HOST.STAGING: config.HOST.PRODUCTION\n\n return `https://${host}`.replace(/\\/$/, '')\n }\n\n /**\n * Set default value for data object used for multiple init functions\n * @param {Object} data { data.assistantUrl, data.chatPath }\n * @param {Object} data\n */\n formatData(data) {\n const chatPath = data.chatPath || '/chat'\n\n /*\n Formatting the url to remove trailing slash\n This avoids problems with missing or duplicating slashes when composing other urls with them\n */\n data.assistantUrl = this.setAssistantUrl(data.assistantUrl, window.location.href)\n data.chatPath = chatPath.replace(/^\\//, '')\n data.chatUrl = `${data.assistantUrl}/${data.chatPath}`\n data.locale = data.locale || 'fr_FR'\n data.isAdmin = data.isAdmin ? true : false\n data.isStartBtn = data.isStartBtn ? true : false\n data.isDemo = data.isDemo ? true : false\n data.location = encodeURIComponent(window.location.href)\n\n if (data.hasOwnProperty('shouldBeOpened')) {\n data.shouldBeOpened = data.shouldBeOpened ? true : false\n }\n\n // Check if the YELDA_PARAMETER(yparam) parameter exists in the url then add it to the data\n const yeldaParam = this.getUrlParam(config.YELDA_PARAMETER, null)\n\n if (yeldaParam && yeldaParam !== '') {\n data[config.YELDA_PARAMETER] = yeldaParam\n }\n\n if (data.hasOwnProperty('canBeClosed')) {\n data.canBeClosed = data.canBeClosed ? true : false\n }\n\n // default container\n this.parentContainer = document.body\n this.bubbleContainer = null\n this.bubbleContainerClone = null\n\n if (data.bubbleContainerChildId && document.getElementById(data.bubbleContainerChildId)) {\n this.bubbleContainer = document.getElementById(data.bubbleContainerChildId).parentElement\n\n /**\n * if the bubbleContainer exists take the clone of the bubbleContainerChildId's parentElement,\n * so that it can be restored on unLoadChat function\n */\n if (this.bubbleContainer) {\n this.bubbleContainerClone = document.getElementById(data.bubbleContainerChildId).parentElement.cloneNode(true)\n }\n }\n\n // If parentContainerId presents and valid one, set parentContainer\n if (data.parentContainerId && document.getElementById(data.parentContainerId)) {\n this.parentContainer = document.getElementById(data.parentContainerId)\n // Don't overwrite canBeClosed if it has been explicitly set in the webchat config\n // However, if canBeClosed is not provided but the parentContainerId is provided, force it to false\n data.canBeClosed = data.hasOwnProperty('canBeClosed') ? data.canBeClosed : config.CAN_BE_CLOSED_WITH_PARENT_ID\n }\n\n return data\n }\n\n /**\n * Check whether the css href is yeldaWebchatInjector.css or yeldaWebchatInjector.min.css\n * @param {String} cssHref\n * @returns {Boolean}\n */\n isYeldaCssInjector(cssHref) {\n const injectorCSSRegex = new RegExp('\\\\yeldaWebchatInjector(.min)?.css')\n return injectorCSSRegex.test(cssHref)\n }\n\n /**\n * Check whether the style sheet is already loaded\n * @returns {Boolean}\n */\n isStyleSheetLoaded() {\n const sheets = document.styleSheets\n let isFound = false\n const cssSelector = '.yelda_assistant_img' // Used to check style sheet loaded or not\n\n if (typeof sheets !== 'undefined' && sheets.length) {\n sheetsLoop: for (let i = 0; i < sheets.length; i++) {\n const sheet = document.styleSheets[i]\n\n try {\n const rules = sheet.cssRules\n if (typeof rules !== 'undefined') {\n for (let j = 0; j < rules.length; j++) {\n if (typeof rules[j].selectorText !== 'undefined' && rules[j].selectorText === cssSelector) {\n isFound = true\n break sheetsLoop\n }\n }\n }\n } catch (e) {\n if(this.isYeldaCssInjector(sheet.href)) {\n isFound = true\n break sheetsLoop\n }\n continue\n }\n }\n }\n\n return isFound\n }\n\n /**\n * Get the app env from the assistant url\n * @param {String} assistantUrl\n * @returns {String} env\n */\n getAppEnv(assistantUrl) {\n if (config.REGEX_HOST.STAGING.test(assistantUrl)) {\n return config.APP_ENV_VALUES.STAGING\n }\n\n // By default, use the production env\n return config.APP_ENV_VALUES.PRODUCTION\n }\n\n /**\n * Get the chat bubble url base based on isFallback\n * @param {Object} data { assistantUrl, assistantId, settingId }\n * @param {Boolean} isFallback fallback means yelda endpoint\n * @returns {String} url base\n */\n getChatBubbleUrlBase(data, isFallback) {\n if (isFallback) {\n return `${data.assistantUrl}/assistants`\n }\n return config.CHAT_BUBBLE_EXTERNAL_ENDPOINT\n }\n\n /**\n * return getAssistantSettings endpoint URL from data\n * @param {Object} data { assistantUrl, assistantId, settingId }\n * @param {Boolean} isFallback\n * @return {String} url\n */\n getAssistantSettingsUrl(data, isFallback) {\n const urlBase = this.getChatBubbleUrlBase(data, isFallback)\n // The app env is required as query for the external chatbubble endpoint\n // If the env was not explicitly set in data, guess it from the assistant url\n const appEnv = data.env || this.getAppEnv(data.assistantUrl)\n const envQuery = `env=${appEnv}`\n if(data.settingId) {\n return `${urlBase}/settings/${data.settingId}/chatBubble?${envQuery}`\n }\n\n return `${urlBase}/${data.assistantId}/chatBubble/${data.locale}?${envQuery}`\n }\n\n /**\n * Update assistantImage with assistant settings from backend if any\n * @param {Object} data { assistantUrl, assistantId, settingId }\n * @param {Object} options\n * @param {Object} options.isFallback\n * @param {Number} options.customTimeout in milliseconds\n * @return {Promise}\n */\n getAssistantSettings(data, { isFallback = false, customTimeout = null } = {}) {\n return new Promise((resolve, reject) => {\n try {\n const xhr = new XMLHttpRequest()\n\n // Get the url base depending on if we are doing the basic request (external chatbubble endpoint)\n // or the fallback one (chatbubble endpoint in Yelda)\n const url = this.getAssistantSettingsUrl(data, isFallback)\n\n xhr.open('GET', url)\n if (customTimeout) {\n xhr.timeout = customTimeout\n }\n xhr.send()\n\n // Bind and call are necessary to pass the \"this\" to the callback function\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n const responseText = xhr.responseText ? JSON.parse(xhr.responseText) : null\n // Yelda endpoint returns { data: ...webchatSettings } (to be compatible with old versions of the chat-plugin)\n // whereas the external endpoint returns { ...webchatSettings }\n // We need to handle both format\n const webchatSettings = responseText && (responseText.data || responseText)\n\n if (webchatSettings) {\n return resolve(webchatSettings)\n }\n\n // We did not received the expected webchatSettings\n // If we are already in fallback mode, it means there is no webchat settings for the given init information\n if (isFallback) {\n return resolve(null)\n }\n\n // If the initial request do not return webchatSettings, it might be because they were not set in Redis yet\n // So let's call the yelda endpoint (fallback) that will find the setting (if it exists) and set it in Redis\n return resolve(this.getAssistantSettings(data, { isFallback: true }))\n }\n }\n\n xhr.ontimeout = () => {\n /*\n It the initial request to the external chatbubble endpoint timed out, (maybe the endpoint is down)\n let's fallback on the yelda endpoint\n */\n if (!isFallback) {\n // Set isFallback to true to be sure to not end up in an infinite loop\n return resolve(this.getAssistantSettings(data, { isFallback: true }))\n }\n }\n } catch (e) {\n // when json.parse fails or xhr onerror catch will be called\n reject()\n }\n })\n }\n\n /**\n * Initialize the chat window\n * @param {object} data\n */\n setupChat(data) {\n return new Promise(async resolve => {\n if (document.getElementById('yelda_container') || document.getElementById('yelda_iframe_container')) {\n return resolve()\n }\n\n this.webChatContainer = null\n this.iframeContainer = null\n this.webChatIframe = null\n this.webchatSettings = null\n\n // Format the data with default values if not exists\n data = this.formatData(data)\n\n if (data.settingId === undefined && (data.assistantId === undefined || data.assistantSlug === undefined)) {\n return resolve()\n }\n\n\n // These data will be needed to avoid loading outdated data in the chat (in case of multiple chat load requests)\n this.assistantId = data.assistantId\n this.locale = data.locale\n this.settingId = data.settingId\n\n // Get assistant settings from backend\n try {\n this.webchatSettings = await this.getAssistantSettings(data, { customTimeout: config.CHAT_BUBBLE_REQUEST_TIMEOUT })\n // Webchat can be loaded thanks to a single settingId or group of data : {assistantId, assistantSlug, locale}\n // If only settingId is provided, then we will fill {assistantId, assistantSlug, locale} thanks to the assistant settings\n data = this.updateAssistantData(data, this.webchatSettings)\n\n } catch (err) {\n this.webchatSettings = null\n }\n\n // Remove event listeners when switching bots\n this.listenLeaveViewport(true)\n this.listenUrlUpdate(true)\n\n this.loadChat(data)\n\n this.configurationData = data\n return resolve()\n })\n }\n\n /**\n * Check the webchat can be loaded\n * @param {Object} webchatSettings\n * @param {Object} data - iframe data sent from webchat window\n * @returns {Boolean}\n */\n shouldChatBeLoaded(webchatSettings, data) {\n // if bubbleContainerChildId has been set but there is no element in the DOM matching this id\n // the chat should not be loaded\n if (data && data.bubbleContainerChildId && (!document.getElementById(data.bubbleContainerChildId) || !document.getElementById(data.bubbleContainerChildId).parentElement)) {\n return false\n }\n\n // if webchatSettings is null, it means that the admins didn't created custom webchat settings or\n // or that the API call to get the settings failed\n // In this case we can still load the webchat with the default settings\n if (!webchatSettings) {\n return true\n }\n\n // Chat should always be loaded on ALWAYS_ALLOWED_SITES list of domain\n const currentHost = window.location.hostname\n if (config.ALWAYS_ALLOWED_SITES_REGEX.test(currentHost)) {\n return true\n }\n\n // if webchat publication status is set to false, we should not load it\n if (webchatSettings.hasOwnProperty('isActivated') && !webchatSettings.isActivated) {\n return false\n }\n\n return true\n }\n\n /**\n * Return if the webchat loadChat settings are different from the yeldaChat global assistant settings\n *\n * - yeldaChat can be init (and reset) either with the settingId parameter or the pair (assistantId, locale) that we store globally\n * - Each new webchat loading request implies a \"getAssistantSettings\" async API call,\n * => If multiple new webchat loading requests are done in a short amount of time,\n * \"getAssistantSettings\" response can be subject to a race condition issue:\n * The latest requested answer received might not be the latest API call answer.\n *\n * isDataOutdated checks if one of the global parameter is different the ones from the webchat settings we got from the \"getAssistantSettings\" API call\n * so the \"loadChat\" function can be informed that the latest request is not the one currently handled\n * And can stop the current process to let the chat load with the global latest requested settings\n *\n * @param {Object} webchatSettings - current settings from the reset or init yeldaChat request\n * @param {String} webchatSettings.settingId\n * @param {String} webchatSettings.assistantId\n * @param {String} webchatSettings.locale\n * @param {Object} globalData - latest globally stored settings from the reset or init yeldaChat request\n * @param {String} globalData.settingId\n * @param {String} globalData.assistantId\n * @param {String} globalData.locale\n * @returns {Boolean}\n */\n isDataOutdated(data, { settingId, assistantId, locale }) {\n if (data.settingId && data.settingId !== settingId) {\n return true\n }\n if (!data.settingId && (data.assistantId !== assistantId || data.locale !== locale)) {\n return true\n }\n return false\n }\n\n /**\n * Load the chat after getting the webchat settings if publication is enabled\n * @param {Object} data { data.assistantUrl, data.assistantId, data.locale }\n */\n loadChat(data) {\n if (this.isDataOutdated(data, this)) {\n return\n }\n if (!this.shouldChatBeLoaded(this.webchatSettings, data)) {\n this.unLoadChat()\n return\n }\n\n // Load Async css only if style sheet not found\n if (!this.isStyleSheetLoaded()) {\n this.loadCssAsync()\n }\n\n if (!document.body || !this.parentContainer) {\n console.warn('document.body is not ready, please use yelda.init instead of yelda.setupChat or move the code in the page body')\n return null\n }\n\n // Create container for iframe\n this.createContainer()\n\n // create the iframe and insert into iframe container\n this.setUpChatIFrame(data)\n\n // Add assistant image if the webchat can be closed\n // Otherwise we will be able to close the webchat but not open it again\n // Or the image will not be initialized on load at all\n // because the assistant image containing the openChat event wouldn't have been created\n if (!data.hasOwnProperty('canBeClosed') || data.canBeClosed) {\n this.addAssistantImage()\n }\n\n // add the frame lister to receive message from iframe to the parent\n this.toggleFrameListener()\n }\n\n /**\n * destroy the webchat window\n */\n unLoadChat() {\n this.toggleFrameListener(true)\n\n if (this.assistantImage) {\n // If bubbleContainer exists instead of removing the assistantImage dom, replace with the original dom of bubbleContainer\n if (this.bubbleContainer) {\n this.assistantImage.removeAttribute('id', 'yelda_assistant_img')\n this.assistantImage.removeAttribute('class', 'yelda_assistant_img default')\n this.assistantImage.removeEventListener('click', this.openChat.bind(this))\n this.assistantImage.replaceWith(this.bubbleContainerClone)\n } else {\n this.removeElement('yelda_assistant_img')\n }\n }\n\n if (this.assistantBubbleText) {\n this.removeElement('yelda_assistant_bubble_text')\n }\n\n if (this.iframeContainer) {\n this.removeElement('yelda_iframe_container')\n }\n\n if (this.webChatContainer) {\n this.removeElement('yelda_container')\n }\n\n this.assistantBubbleText = null\n this.bubbleContainerClone = null\n this.bubbleContainer = null\n this.assistantImage = null\n this.iframeContainer = null\n this.webChatIframe = null\n this.webChatContainer = null\n this.parentContainer = null\n this.webchatSettings = null\n }\n\n /**\n * Remove element from dom\n * @param {String} id\n */\n removeElement(id) {\n if (document.getElementById(id)) {\n document.getElementById(id).remove()\n }\n }\n\n init(data) {\n return new Promise(async resolve => {\n if (data.settingId === undefined && (data.assistantId === undefined || data.assistantSlug === undefined)) {\n return resolve()\n }\n\n // if the DOM is already ready, call setupChat\n if (document.readyState === 'complete') {\n await this.setupChat(data)\n return resolve()\n }\n\n // If the DOM is not yet ready, wait\n window.onload = async () => {\n await this.setupChat(data)\n return resolve()\n }\n })\n }\n\n /**\n * Send a user message to the webchat\n */\n sendMessageToChat(message) {\n const webchatFrame = document.getElementById('web_chat_frame')\n if (webchatFrame) {\n this.openChat()\n webchatFrame.contentWindow.postMessage({ event: config.FRAME_EVENT_TYPES.SENT.SEND_USER_MESSAGE, data: message })\n }\n }\n\n /**\n * Listen to url update on the page\n * @param {Boolean} shouldRemoveEvent\n */\n listenUrlUpdate(shouldRemoveEvent = false) {\n if (shouldRemoveEvent && this.urlObserver) {\n this.urlObserver.disconnect()\n this.urlObserver = null\n return\n }\n\n try {\n this.previousUrl = ''\n this.urlObserver = new MutationObserver(() => {\n if (location.href === this.previousUrl) {\n return\n }\n this.previousUrl = location.href\n this.urlUpdateListener()\n })\n\n this.urlObserver.observe(document, {childList: true, subtree: true})\n } catch(err) {\n console.warn('listenUrlUpdate error', err)\n }\n }\n\n /**\n * Callback for url update listener\n */\n urlUpdateListener() {\n const webchatFrame = document.getElementById('web_chat_frame')\n\n if (!webchatFrame) {\n return\n }\n webchatFrame.contentWindow.postMessage({ event: config.FRAME_EVENT_TYPES.SENT.URL_UPDATE, data: window.location.href }, '*')\n }\n\n /**\n * Listen leave viewport event handling\n * @param {Boolean} shouldRemoveEvent - default false\n */\n listenLeaveViewport(shouldRemoveEvent = false) {\n const md = new MobileDetect(navigator.userAgent)\n const isMobile = md.mobile() !== null\n\n /**\n * Not needed to listen on mobile since webchat covers the full page of the site\n * and we can't able to detect mouseout events\n */\n if (isMobile) {\n return\n }\n\n const eventHandler = window[shouldRemoveEvent ? 'removeEventListener' : 'addEventListener']\n\n if (!this.viewportListenerBind) {\n this.viewportListenerBind = this.viewportListener.bind(this)\n }\n // mouseout event is used to listen leave viewport\n eventHandler('mouseout', this.viewportListenerBind)\n }\n\n /**\n * Callback for leave viewport listener\n * @param {Event} event\n */\n viewportListener(event) {\n /**\n * when mouse moves between dom elements mouseout event is trigged but we need to trigger\n * the event when mouse moves out of the viewport so toElement and relatedTarget is checked\n */\n if (event.toElement || event.relatedTarget) {\n return\n }\n\n // When mouse leaves the viewport send 'leaveViewPort' to webchat\n document.getElementById('web_chat_frame').contentWindow.postMessage({\n event: config.FRAME_EVENT_TYPES.SENT.LEAVE_VIEWPORT\n }, '*')\n }\n}\n\nlet yeldaChat = new YeldaChat()\n\nif (typeof window !== 'undefined') {\n window.yeldaChat = yeldaChat\n}\n\nexport default yeldaChat\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","/**!\n * lg-video.js | 1.2.0 | May 20th 2020\n * http://sachinchoolur.github.io/lg-video.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgVideo = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof exports !== \"undefined\") {\n factory();\n } else {\n var mod = {\n exports: {}\n };\n factory();\n global.lgVideo = mod.exports;\n }\n})(this, function () {\n 'use strict';\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var videoDefaults = {\n videoMaxWidth: '855px',\n youtubePlayerParams: false,\n vimeoPlayerParams: false,\n dailymotionPlayerParams: false,\n vkPlayerParams: false,\n videojs: false,\n videojsOptions: {}\n };\n\n var Video = function Video(element) {\n\n this.el = element;\n\n this.core = window.lgData[this.el.getAttribute('lg-uid')];\n this.core.s = _extends({}, videoDefaults, this.core.s);\n\n this.videoLoaded = false;\n\n this.init();\n\n return this;\n };\n\n Video.prototype.init = function () {\n var _this = this;\n\n // Event triggered when video url found without poster\n utils.on(_this.core.el, 'hasVideo.lgtm', function (event) {\n _this.core.___slide[event.detail.index].querySelector('.lg-video').insertAdjacentHTML('beforeend', _this.loadVideo(event.detail.src, 'lg-object', true, event.detail.index, event.detail.html));\n if (event.detail.html) {\n if (_this.core.s.videojs) {\n try {\n videojs(_this.core.___slide[event.detail.index].querySelector('.lg-html5'), _this.core.s.videojsOptions, function () {\n if (!_this.videoLoaded) {\n this.play();\n }\n });\n } catch (e) {\n console.error('Make sure you have included videojs');\n }\n } else {\n _this.core.___slide[event.detail.index].querySelector('.lg-html5').play();\n }\n }\n });\n\n // Set max width for video\n utils.on(_this.core.el, 'onAferAppendSlide.lgtm', function (event) {\n if (_this.core.___slide[event.detail.index].querySelector('.lg-video-cont')) {\n _this.core.___slide[event.detail.index].querySelector('.lg-video-cont').style.maxWidth = _this.core.s.videoMaxWidth;\n _this.videoLoaded = true;\n }\n });\n\n var loadOnClick = function loadOnClick($el) {\n // check slide has poster\n if (utils.hasClass($el.querySelector('.lg-object'), 'lg-has-poster') && $el.querySelector('.lg-object').style.display !== 'none') {\n\n // check already video element present\n if (!utils.hasClass($el, 'lg-has-video')) {\n\n utils.addClass($el, 'lg-video-playing');\n utils.addClass($el, 'lg-has-video');\n\n var _src;\n var _html;\n var _loadVideo = function _loadVideo(_src, _html) {\n\n $el.querySelector('.lg-video').insertAdjacentHTML('beforeend', _this.loadVideo(_src, '', false, _this.core.index, _html));\n\n if (_html) {\n if (_this.core.s.videojs) {\n try {\n videojs(_this.core.___slide[_this.core.index].querySelector('.lg-html5'), _this.core.s.videojsOptions, function () {\n this.play();\n });\n } catch (e) {\n console.error('Make sure you have included videojs');\n }\n } else {\n _this.core.___slide[_this.core.index].querySelector('.lg-html5').play();\n }\n }\n };\n\n if (_this.core.s.dynamic) {\n\n _src = _this.core.s.dynamicEl[_this.core.index].src;\n _html = _this.core.s.dynamicEl[_this.core.index].html;\n\n _loadVideo(_src, _html);\n } else {\n\n _src = _this.core.items[_this.core.index].getAttribute('href') || _this.core.items[_this.core.index].getAttribute('data-src');\n _html = _this.core.items[_this.core.index].getAttribute('data-html');\n\n _loadVideo(_src, _html);\n }\n\n var $tempImg = $el.querySelector('.lg-object');\n $el.querySelector('.lg-video').appendChild($tempImg);\n\n // @todo loading icon for html5 videos also\n // for showing the loading indicator while loading video\n if (!utils.hasClass($el.querySelector('.lg-video-object'), 'lg-html5')) {\n utils.removeClass($el, 'lg-complete');\n utils.on($el.querySelector('.lg-video-object'), 'load.lg error.lg', function () {\n utils.addClass($el, 'lg-complete');\n });\n }\n } else {\n\n var youtubePlayer = $el.querySelector('.lg-youtube');\n var vimeoPlayer = $el.querySelector('.lg-vimeo');\n var dailymotionPlayer = $el.querySelector('.lg-dailymotion');\n var html5Player = $el.querySelector('.lg-html5');\n if (youtubePlayer) {\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\n } else if (vimeoPlayer) {\n try {\n $f(vimeoPlayer).api('play');\n } catch (e) {\n console.error('Make sure you have included froogaloop2 js');\n }\n } else if (dailymotionPlayer) {\n dailymotionPlayer.contentWindow.postMessage('play', '*');\n } else if (html5Player) {\n if (_this.core.s.videojs) {\n try {\n videojs(html5Player).play();\n } catch (e) {\n console.error('Make sure you have included videojs');\n }\n } else {\n html5Player.play();\n }\n }\n\n utils.addClass($el, 'lg-video-playing');\n }\n }\n };\n\n if (_this.core.doCss() && _this.core.items.length > 1 && (_this.core.s.enableSwipe && _this.core.isTouch || _this.core.s.enableDrag && !_this.core.isTouch)) {\n utils.on(_this.core.el, 'onSlideClick.lgtm', function () {\n var $el = _this.core.___slide[_this.core.index];\n loadOnClick($el);\n });\n } else {\n\n // For IE 9 and bellow\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n utils.on(_this.core.___slide[index], 'click.lg', function () {\n loadOnClick(_this.core.___slide[index]);\n });\n })(i);\n }\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function (event) {\n\n var $videoSlide = _this.core.___slide[event.detail.prevIndex];\n var youtubePlayer = $videoSlide.querySelector('.lg-youtube');\n var vimeoPlayer = $videoSlide.querySelector('.lg-vimeo');\n var dailymotionPlayer = $videoSlide.querySelector('.lg-dailymotion');\n var vkPlayer = $videoSlide.querySelector('.lg-vk');\n var html5Player = $videoSlide.querySelector('.lg-html5');\n if (youtubePlayer) {\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n } else if (vimeoPlayer) {\n try {\n $f(vimeoPlayer).api('pause');\n } catch (e) {\n console.error('Make sure you have included froogaloop2 js');\n }\n } else if (dailymotionPlayer) {\n dailymotionPlayer.contentWindow.postMessage('pause', '*');\n } else if (html5Player) {\n if (_this.core.s.videojs) {\n try {\n videojs(html5Player).pause();\n } catch (e) {\n console.error('Make sure you have included videojs');\n }\n } else {\n html5Player.pause();\n }\n }if (vkPlayer) {\n\n vkPlayer.setAttribute('src', vkPlayer.getAttribute('src').replace('&autoplay', '&noplay'));\n }\n\n var _src;\n if (_this.core.s.dynamic) {\n _src = _this.core.s.dynamicEl[event.detail.index].src;\n } else {\n _src = _this.core.items[event.detail.index].getAttribute('href') || _this.core.items[event.detail.index].getAttribute('data-src');\n }\n\n var _isVideo = _this.core.isVideo(_src, event.detail.index) || {};\n if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {\n utils.addClass(_this.core.outer, 'lg-hide-download');\n }\n\n //$videoSlide.addClass('lg-complete');\n });\n\n utils.on(_this.core.el, 'onAfterSlide.lgtm', function (event) {\n utils.removeClass(_this.core.___slide[event.detail.prevIndex], 'lg-video-playing');\n });\n };\n\n Video.prototype.loadVideo = function (src, addClass, noposter, index, html) {\n var video = '';\n var autoplay = 1;\n var a = '';\n var isVideo = this.core.isVideo(src, index) || {};\n\n // Enable autoplay for first video if poster doesn't exist\n if (noposter) {\n if (this.videoLoaded) {\n autoplay = 0;\n } else {\n autoplay = 1;\n }\n }\n\n var videoTitle;\n\n if (this.core.s.dynamic) {\n videoTitle = this.core.s.dynamicEl[index].title;\n } else {\n videoTitle = this.core.items[index].getAttribute('title');\n }\n\n var firstImage = this.core.items[index].querySelector('img');\n\n if (firstImage) {\n videoTitle = videoTitle || firstImage.getAttribute('alt');\n }\n\n videoTitle = videoTitle ? 'title=\"' + videoTitle + '\"' : '';\n\n if (isVideo.youtube) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';\n if (this.core.s.youtubePlayerParams) {\n a = a + '&' + utils.param(this.core.s.youtubePlayerParams);\n }\n\n video = '<iframe class=\"lg-video-object lg-youtube ' + addClass + '\" ' + videoTitle + ' width=\"560\" height=\"315\" src=\"//www.youtube.com/embed/' + isVideo.youtube[1] + a + '\" frameborder=\"0\" allowfullscreen></iframe>';\n } else if (isVideo.vimeo) {\n\n a = '?autoplay=' + autoplay + '&api=1';\n if (this.core.s.vimeoPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vimeoPlayerParams);\n }\n\n video = '<iframe class=\"lg-video-object lg-vimeo ' + addClass + '\" ' + videoTitle + ' width=\"560\" height=\"315\" src=\"//player.vimeo.com/video/' + isVideo.vimeo[1] + a + '\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';\n } else if (isVideo.dailymotion) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';\n if (this.core.s.dailymotionPlayerParams) {\n a = a + '&' + utils.param(this.core.s.dailymotionPlayerParams);\n }\n\n video = '<iframe class=\"lg-video-object lg-dailymotion ' + addClass + '\" ' + videoTitle + ' width=\"560\" height=\"315\" src=\"//www.dailymotion.com/embed/video/' + isVideo.dailymotion[1] + a + '\" frameborder=\"0\" allowfullscreen></iframe>';\n } else if (isVideo.html5) {\n var fL = html.substring(0, 1);\n if (fL === '.' || fL === '#') {\n html = document.querySelector(html).innerHTML;\n }\n\n video = html;\n } else if (isVideo.vk) {\n\n a = '&autoplay=' + autoplay;\n if (this.core.s.vkPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vkPlayerParams);\n }\n\n video = '<iframe class=\"lg-video-object lg-vk ' + addClass + '\" ' + videoTitle + ' width=\"560\" height=\"315\" src=\"http://vk.com/video_ext.php?' + isVideo.vk[1] + a + '\" frameborder=\"0\" allowfullscreen></iframe>';\n }\n\n return video;\n };\n\n Video.prototype.destroy = function () {\n this.videoLoaded = false;\n };\n\n window.lgModules.video = Video;\n});\n\n},{}]},{},[1])(1)\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// eslint-disable-next-line no-undef\nmodule.exports = {\n CAN_BE_CLOSED_WITH_PARENT_ID: false,\n YELDA_PARAMETER: 'yparam',\n DEFAULT_PUBLICATION_STATUS: true,\n ALWAYS_ALLOWED_SITES_REGEX : /^([a-z-]*.yelda.ai|localhost|0.0.0.0|127.0.0.1)$/,\n REGEX_HOST: {\n STAGING: /staging.yelda.ai/\n },\n HOST: {\n PRODUCTION: 'app.yelda.ai',\n STAGING: 'staging.yelda.ai',\n },\n FRAME_EVENT_TYPES: {\n SENT: {\n OPEN_CHAT: 'openChat',\n LEAVE_VIEWPORT: 'leaveViewPort',\n SEND_USER_MESSAGE: 'sendUserMessage',\n URL_UPDATE: 'urlUpdate'\n },\n RECEIVED: {\n OPEN_CHAT: 'openChat',\n CLOSE_CHAT: 'closeChat',\n ABSTAIN_LEAVE_VIEWPORT: 'abstainLeaveViewport',\n OPEN_LIGHT_GALLERY: 'openLightGallery',\n IS_SENDING_MESSAGE: 'isSendingMessage',\n LISTEN_LEAVE_VIEWPORT: 'listenLeaveViewport',\n LISTEN_URL_UPDATE: 'listenUrlUpdate',\n ABSTAIN_URL_UPDATE: 'abstainUrlUpdate',\n ADD_BUBBLE_TEXT: 'addBubbleText',\n ADD_MINIMAL_NOTIFICATION_TEXT: 'addMinimalNotificationText'\n }\n },\n CHAT_BUBBLE_EXTERNAL_ENDPOINT: 'https://webchat.yelda.ai/webchat',\n CHAT_BUBBLE_REQUEST_TIMEOUT: 5000,\n APP_ENV_VALUES: {\n STAGING: 'staging',\n PRODUCTION: 'production'\n }\n}\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _promise = require(\"../core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","exports.f = {}.propertyIsEnumerable;\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n hideBarsDelay: 6000,\n\n useLeft: false,\n\n // aria-labelledby attribute fot gallery\n ariaLabelledby: '',\n\n //aria-describedby attribute for gallery\n ariaDescribedby: '',\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\n * @desc number of preload slides\n * will exicute only after the current slide is fully loaded.\n *\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\n *\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '<div class=\"lg-backdrop\"></div>');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '<div class=\"lg-item\"></div>';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '<div class=\"lg-actions\">' + '<button aria-label=\"Previous slide\" class=\"lg-prev lg-icon\">' + this.s.prevHtml + '</button>' + '<button aria-label=\"Next slide\" class=\"lg-next lg-icon\">' + this.s.nextHtml + '</button>' + '</div>';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '<div role=\"status\" aria-live=\"polite\" class=\"lg-sub-html\"></div>';\n }\n\n var ariaLabelledby = this.s.ariaLabelledby ? 'aria-labelledby=\"' + this.s.ariaLabelledby + '\"' : '';\n var ariaDescribedby = this.s.ariaDescribedby ? 'aria-describedby=\"' + this.s.ariaDescribedby + '\"' : '';\n\n template = '<div tabindex=\"-1\" aria-modal=\"true\" ' + ariaLabelledby + ' ' + ariaDescribedby + ' role=\"dialog\" class=\"lg-outer ' + this.s.addClass + ' ' + this.s.startClass + '\">' + '<div class=\"lg\" style=\"width:' + this.s.width + '; height:' + this.s.height + '\">' + '<div class=\"lg-inner\">' + list + '</div>' + '<div class=\"lg-toolbar group\">' + '<button aria-label=\"Close gallery\" class=\"lg-close lg-icon\"></button>' + '</div>' + controls + subHtmlCont + '</div>' + '</div>';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.outer.focus();\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '<a id=\"lg-download\" aria-label=\"Download\" target=\"_blank\" download class=\"lg-download lg-icon\"></a>');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '<div id=\"lg-counter\" role=\"status\" aria-live=\"polite\"><span id=\"lg-counter-current\">' + (parseInt(this.index, 10) + 1) + '</span> / <span id=\"lg-counter-all\">' + this.items.length + '</span></div>');\n }\n };\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\n * @desc Load slide content into slide.\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var _alt;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n _alt = _this.s.dynamicEl[index].alt;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n _alt = _this.items[index].getAttribute('title');\n\n if (_this.items[index].querySelector('img')) {\n _alt = _alt || _this.items[index].querySelector('img').getAttribute('alt');\n }\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '<div class=\"lg-video-cont\" style=\"max-width:' + _this.s.iframeMaxWidth + '\"><div class=\"lg-video\"><iframe class=\"lg-object\" frameborder=\"0\" src=\"' + _src + '\" allowfullscreen=\"true\"></iframe></div></div>');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '<div class=\"lg-video-cont ' + videoClass + ' \"><div class=\"lg-video\"><span class=\"lg-video-play\"></span><img class=\"lg-object lg-has-poster\" src=\"' + _poster + '\" /></div></div>');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '<div class=\"lg-video-cont \"><div class=\"lg-video\"></div></div>');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _alt = _alt ? 'alt=\"' + _alt + '\"' : '';\n _this.___slide[index].insertAdjacentHTML('beforeend', '<div class=\"lg-img-wrap\"><img class=\"lg-object lg-image\" ' + _alt + ' src=\"' + _src + '\" /></div>');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.error('Make sure you have included Picturefill version 2');\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\n * @desc slide function for lightgallery\n ** Slide() gets call on start\n ** ** Set lg.on true once slide() function gets called.\n ** Call loadContent() on slide() function inside setTimeout\n ** ** On first slide we do not want any animation like slide of fade\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\n ** ** Else loadContent() should wait for the transition to complete.\n ** ** So set timeout s.speed + 50\n <=> ** loadContent() will load slide content in to the particular slide\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\n ** ** avoid simultaneous image load\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\n ** loadContent() <====> Preload();\n \n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\n * @desc Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\n * @desc Go to previous slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n prev.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(prev, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\n * if d is false or undefined destroy will only close the gallery\n * plugins instance remains with the element\n *\n * if d is true destroy will completely remove the plugin\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy(d);\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n _this.el.focus();\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n try {\n window.lgData[el.getAttribute('lg-uid')].init();\n } catch (err) {\n console.error('lightGallery has not initiated properly');\n }\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly');\n }\n };\n});","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = {};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var core = module.exports = { version: '2.6.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","/**!\n * lg-share.js | 1.3.0 | May 20th 2020\n * http://sachinchoolur.github.io/lg-share.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgShare = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof exports !== \"undefined\") {\n factory();\n } else {\n var mod = {\n exports: {}\n };\n factory();\n global.lgShare = mod.exports;\n }\n})(this, function () {\n 'use strict';\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var shareSefaults = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'Twitter',\n googlePlus: true,\n googlePlusDropdownText: 'GooglePlus',\n pinterest: true,\n pinterestDropdownText: 'Pinterest'\n };\n\n function toCamelCase(input) {\n return input.toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n }\n\n var Share = function Share(element) {\n\n this.el = element;\n\n this.core = window.lgData[this.el.getAttribute('lg-uid')];\n this.core.s = _extends({}, shareSefaults, this.core.s);\n\n if (this.core.s.share) {\n this.init();\n }\n\n return this;\n };\n\n Share.prototype.init = function () {\n var _this = this;\n var shareHtml = '<button aria-label=\"Share\" aria-haspopup=\"true\" aria-expanded=\"false\" id=\"lg-share\" class=\"lg-icon\">' + '<ul class=\"lg-dropdown\" style=\"position: absolute;\">';\n shareHtml += _this.core.s.facebook ? '<li><a id=\"lg-share-facebook\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">' + this.core.s.facebookDropdownText + '</span></a></li>' : '';\n shareHtml += _this.core.s.twitter ? '<li><a id=\"lg-share-twitter\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">' + this.core.s.twitterDropdownText + '</span></a></li>' : '';\n shareHtml += _this.core.s.googlePlus ? '<li><a id=\"lg-share-googleplus\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">' + this.core.s.googlePlusDropdownText + '</span></a></li>' : '';\n shareHtml += _this.core.s.pinterest ? '<li><a id=\"lg-share-pinterest\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">' + this.core.s.pinterestDropdownText + '</span></a></li>' : '';\n shareHtml += '</ul></button>';\n\n this.core.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', shareHtml);\n this.core.outer.querySelector('.lg').insertAdjacentHTML('beforeend', '<div id=\"lg-dropdown-overlay\"></div>');\n var shareButton = document.getElementById('lg-share');\n utils.on(shareButton, 'click.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-dropdown-active')) {\n utils.removeClass(_this.core.outer, 'lg-dropdown-active');\n shareButton.setAttribute('aria-expanded', false);\n } else {\n utils.addClass(_this.core.outer, 'lg-dropdown-active');\n shareButton.setAttribute('aria-expanded', true);\n }\n });\n\n utils.on(document.getElementById('lg-dropdown-overlay'), 'click.lg', function () {\n utils.removeClass(_this.core.outer, 'lg-dropdown-active');\n shareButton.setAttribute('aria-expanded', false);\n });\n\n utils.on(_this.core.el, 'onAfterSlide.lgtm', function (event) {\n\n setTimeout(function () {\n if (_this.core.s.facebook) {\n document.getElementById('lg-share-facebook').setAttribute('href', 'https://www.facebook.com/sharer/sharer.php?u=' + _this.getSharePropsUrl(event.detail.index, 'data-facebook-share-url'));\n }\n if (_this.core.s.twitter) {\n document.getElementById('lg-share-twitter').setAttribute('href', 'https://twitter.com/intent/tweet?text=' + _this.getShareProps(event.detail.index, 'data-tweet-text') + '&url=' + _this.getSharePropsUrl(event.detail.index, 'data-twitter-share-url'));\n }\n if (_this.core.s.googlePlus) {\n document.getElementById('lg-share-googleplus').setAttribute('href', 'https://plus.google.com/share?url=' + _this.getSharePropsUrl(event.detail.index, 'data-googleplus-share-url'));\n }\n if (_this.core.s.pinterest) {\n document.getElementById('lg-share-pinterest').setAttribute('href', 'http://www.pinterest.com/pin/create/button/?url=' + _this.getSharePropsUrl(event.detail.index, 'data-pinterest-share-url') + '&media=' + encodeURIComponent(_this.getShareProps(event.detail.index, 'href') || _this.getShareProps(event.detail.index, 'data-src')) + '&description=' + _this.getShareProps(event.detail.index, 'data-pinterest-text'));\n }\n }, 100);\n });\n };\n\n Share.prototype.getSharePropsUrl = function (index, prop) {\n var shareProp = this.getShareProps(index, prop);\n if (!shareProp) {\n shareProp = window.location.href;\n }\n return encodeURIComponent(shareProp);\n };\n\n Share.prototype.getShareProps = function (index, prop) {\n var shareProp = '';\n if (this.core.s.dynamic) {\n shareProp = this.core.items[index][toCamelCase(prop.replace('data-', ''))];\n } else if (this.core.items[index].getAttribute(prop)) {\n shareProp = this.core.items[index].getAttribute(prop);\n }\n return shareProp;\n };\n\n Share.prototype.destroy = function () {};\n\n window.lgModules.share = Share;\n});\n\n},{}]},{},[1])(1)\n});\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","module.exports = function () { /* empty */ };\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = require('./_hide');\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","module.exports = true;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.lgUtils = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var utils = {\n getAttribute: function getAttribute(el, label) {\n return el[label];\n },\n\n setAttribute: function setAttribute(el, label, value) {\n el[label] = value;\n },\n wrap: function wrap(el, className) {\n if (!el) {\n return;\n }\n\n var wrapper = document.createElement('div');\n wrapper.className = className;\n el.parentNode.insertBefore(wrapper, el);\n el.parentNode.removeChild(el);\n wrapper.appendChild(el);\n },\n\n addClass: function addClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += ' ' + className;\n }\n },\n\n removeClass: function removeClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n },\n\n hasClass: function hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n } else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\n }\n },\n\n // ex Transform\n // ex TransitionTimingFunction\n setVendor: function setVendor(el, property, value) {\n if (!el) {\n return;\n }\n\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\n el.style['webkit' + property] = value;\n el.style['moz' + property] = value;\n el.style['ms' + property] = value;\n el.style['o' + property] = value;\n },\n\n trigger: function trigger(el, event) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n var _this = this;\n\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = _this.getAttribute(el, 'lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n _this.setAttribute(el, 'lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = this.getAttribute(el, 'lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});","// THIS FILE IS GENERATED - DO NOT EDIT!\n/*!mobile-detect v1.4.4 2019-09-21*/\n/*global module:false, define:false*/\n/*jshint latedef:false*/\n/*!@license Copyright 2013, Heinrich Goebl, License: MIT, see https://github.com/hgoebl/mobile-detect.js*/\n(function (define, undefined) {\ndefine(function () {\n 'use strict';\n\n var impl = {};\n\n impl.mobileDetectRules = {\n \"phones\": {\n \"iPhone\": \"\\\\biPhone\\\\b|\\\\biPod\\\\b\",\n \"BlackBerry\": \"BlackBerry|\\\\bBB10\\\\b|rim[0-9]+|\\\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\\\b-[0-9]+\",\n \"HTC\": \"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\\\bEVO\\\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel\",\n \"Nexus\": \"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6\",\n \"Dell\": \"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\\\b001DL\\\\b|\\\\b101DL\\\\b|\\\\bGS01\\\\b\",\n \"Motorola\": \"Motorola|DROIDX|DROID BIONIC|\\\\bDroid\\\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\\\bMoto E\\\\b|XT1068|XT1092|XT1052\",\n \"Samsung\": \"\\\\bSamsung\\\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F\",\n \"LG\": \"\\\\bLG\\\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710\",\n \"Sony\": \"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533\",\n \"Asus\": \"Asus.*Galaxy|PadFone.*Mobile\",\n \"NokiaLumia\": \"Lumia [0-9]{3,4}\",\n \"Micromax\": \"Micromax.*\\\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\\\b\",\n \"Palm\": \"PalmSource|Palm\",\n \"Vertu\": \"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature\",\n \"Pantech\": \"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790\",\n \"Fly\": \"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250\",\n \"Wiko\": \"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM\",\n \"iMobile\": \"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)\",\n \"SimValley\": \"\\\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\\\b\",\n \"Wolfgang\": \"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q\",\n \"Alcatel\": \"Alcatel\",\n \"Nintendo\": \"Nintendo (3DS|Switch)\",\n \"Amoi\": \"Amoi\",\n \"INQ\": \"INQ\",\n \"OnePlus\": \"ONEPLUS\",\n \"GenericPhone\": \"Tapatalk|PDA;|SAGEM|\\\\bmmp\\\\b|pocket|\\\\bpsp\\\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\\\bwap\\\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser\"\n },\n \"tablets\": {\n \"iPad\": \"iPad|iPad.*Mobile\",\n \"NexusTablet\": \"Android.*Nexus[\\\\s]+(7|9|10)\",\n \"GoogleTablet\": \"Android.*Pixel C\",\n \"SamsungTablet\": \"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V\",\n \"Kindle\": \"Kindle|Silk.*Accelerated|Android.*\\\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\\\b|Android.*Silk\\/[0-9.]+ like Chrome\\/[0-9.]+ (?!Mobile)\",\n \"SurfaceTablet\": \"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)\",\n \"HPTablet\": \"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10\",\n \"AsusTablet\": \"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\\\bK00F\\\\b|\\\\bK00C\\\\b|\\\\bK00E\\\\b|\\\\bK00L\\\\b|TX201LA|ME176C|ME102A|\\\\bM80TA\\\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\\\bME70C\\\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\\\bP027\\\\b|\\\\bP024\\\\b|\\\\bP00C\\\\b\",\n \"BlackBerryTablet\": \"PlayBook|RIM Tablet\",\n \"HTCtablet\": \"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410\",\n \"MotorolaTablet\": \"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617\",\n \"NookTablet\": \"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2\",\n \"AcerTablet\": \"Android.*; \\\\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\\\b|W3-810|\\\\bA3-A10\\\\b|\\\\bA3-A11\\\\b|\\\\bA3-A20\\\\b|\\\\bA3-A30\",\n \"ToshibaTablet\": \"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO\",\n \"LGTablet\": \"\\\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\\\b\",\n \"FujitsuTablet\": \"Android.*\\\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\\\b\",\n \"PrestigioTablet\": \"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002\",\n \"LenovoTablet\": \"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X\",\n \"DellTablet\": \"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7\",\n \"YarvikTablet\": \"Android.*\\\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\\\b\",\n \"MedionTablet\": \"Android.*\\\\bOYO\\\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB\",\n \"ArnovaTablet\": \"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2\",\n \"IntensoTablet\": \"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004\",\n \"IRUTablet\": \"M702pro\",\n \"MegafonTablet\": \"MegaFon V9|\\\\bZTE V9\\\\b|Android.*\\\\bMT7A\\\\b\",\n \"EbodaTablet\": \"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)\",\n \"AllViewTablet\": \"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)\",\n \"ArchosTablet\": \"\\\\b(101G9|80G9|A101IT)\\\\b|Qilive 97R|Archos5|\\\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\\\b\",\n \"AinolTablet\": \"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark\",\n \"NokiaLumiaTablet\": \"Lumia 2520\",\n \"SonyTablet\": \"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712\",\n \"PhilipsTablet\": \"\\\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\\\b\",\n \"CubeTablet\": \"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT\",\n \"CobyTablet\": \"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010\",\n \"MIDTablet\": \"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10\",\n \"MSITablet\": \"MSI \\\\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\\\b\",\n \"SMiTTablet\": \"Android.*(\\\\bMID\\\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)\",\n \"RockChipTablet\": \"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A\",\n \"FlyTablet\": \"IQ310|Fly Vision\",\n \"bqTablet\": \"Android.*(bq)?.*\\\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\\\b|Maxwell.*Lite|Maxwell.*Plus\",\n \"HuaweiTablet\": \"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19\",\n \"NecTablet\": \"\\\\bN-06D|\\\\bN-08D\",\n \"PantechTablet\": \"Pantech.*P4100\",\n \"BronchoTablet\": \"Broncho.*(N701|N708|N802|a710)\",\n \"VersusTablet\": \"TOUCHPAD.*[78910]|\\\\bTOUCHTAB\\\\b\",\n \"ZyncTablet\": \"z1000|Z99 2G|z930|z990|z909|Z919|z900\",\n \"PositivoTablet\": \"TB07STA|TB10STA|TB07FTA|TB10FTA\",\n \"NabiTablet\": \"Android.*\\\\bNabi\",\n \"KoboTablet\": \"Kobo Touch|\\\\bK080\\\\b|\\\\bVox\\\\b Build|\\\\bArc\\\\b Build\",\n \"DanewTablet\": \"DSlide.*\\\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\\\b\",\n \"TexetTablet\": \"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE\",\n \"PlaystationTablet\": \"Playstation.*(Portable|Vita)\",\n \"TrekstorTablet\": \"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab\",\n \"PyleAudioTablet\": \"\\\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\\\b\",\n \"AdvanTablet\": \"Android.* \\\\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\\\b \",\n \"DanyTechTablet\": \"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1\",\n \"GalapadTablet\": \"Android.*\\\\bG1\\\\b(?!\\\\))\",\n \"MicromaxTablet\": \"Funbook|Micromax.*\\\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\\\b\",\n \"KarbonnTablet\": \"Android.*\\\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\\\b\",\n \"AllFineTablet\": \"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide\",\n \"PROSCANTablet\": \"\\\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\\\b\",\n \"YONESTablet\": \"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026\",\n \"ChangJiaTablet\": \"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503\",\n \"GUTablet\": \"TX-A1301|TX-M9002|Q702|kf026\",\n \"PointOfViewTablet\": \"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10\",\n \"OvermaxTablet\": \"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027\",\n \"HCLTablet\": \"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync\",\n \"DPSTablet\": \"DPS Dream 9|DPS Dual 7\",\n \"VistureTablet\": \"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10\",\n \"CrestaTablet\": \"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989\",\n \"MediatekTablet\": \"\\\\bMT8125|MT8389|MT8135|MT8377\\\\b\",\n \"ConcordeTablet\": \"Concorde([ ]+)?Tab|ConCorde ReadMan\",\n \"GoCleverTablet\": \"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042\",\n \"ModecomTablet\": \"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003\",\n \"VoninoTablet\": \"\\\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\\\bQ8\\\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\\\b\",\n \"ECSTablet\": \"V07OT2|TM105A|S10OT1|TR10CS1\",\n \"StorexTablet\": \"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab\",\n \"VodafoneTablet\": \"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400\",\n \"EssentielBTablet\": \"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2\",\n \"RossMoorTablet\": \"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711\",\n \"iMobileTablet\": \"i-mobile i-note\",\n \"TolinoTablet\": \"tolino tab [0-9.]+|tolino shine\",\n \"AudioSonicTablet\": \"\\\\bC-22Q|T7-QC|T-17B|T-17P\\\\b\",\n \"AMPETablet\": \"Android.* A78 \",\n \"SkkTablet\": \"Android.* (SKYPAD|PHOENIX|CYCLOPS)\",\n \"TecnoTablet\": \"TECNO P9|TECNO DP8D\",\n \"JXDTablet\": \"Android.* \\\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\\\b\",\n \"iJoyTablet\": \"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)\",\n \"FX2Tablet\": \"FX2 PAD7|FX2 PAD10\",\n \"XoroTablet\": \"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151\",\n \"ViewsonicTablet\": \"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a\",\n \"VerizonTablet\": \"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1\",\n \"OdysTablet\": \"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\\\bXELIO\\\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10\",\n \"CaptivaTablet\": \"CAPTIVA PAD\",\n \"IconbitTablet\": \"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S\",\n \"TeclastTablet\": \"T98 4G|\\\\bP80\\\\b|\\\\bX90HD\\\\b|X98 Air|X98 Air 3G|\\\\bX89\\\\b|P80 3G|\\\\bX80h\\\\b|P98 Air|\\\\bX89HD\\\\b|P98 3G|\\\\bP90HD\\\\b|P89 3G|X98 3G|\\\\bP70h\\\\b|P79HD 3G|G18d 3G|\\\\bP79HD\\\\b|\\\\bP89s\\\\b|\\\\bA88\\\\b|\\\\bP10HD\\\\b|\\\\bP19HD\\\\b|G18 3G|\\\\bP78HD\\\\b|\\\\bA78\\\\b|\\\\bP75\\\\b|G17s 3G|G17h 3G|\\\\bP85t\\\\b|\\\\bP90\\\\b|\\\\bP11\\\\b|\\\\bP98t\\\\b|\\\\bP98HD\\\\b|\\\\bG18d\\\\b|\\\\bP85s\\\\b|\\\\bP11HD\\\\b|\\\\bP88s\\\\b|\\\\bA80HD\\\\b|\\\\bA80se\\\\b|\\\\bA10h\\\\b|\\\\bP89\\\\b|\\\\bP78s\\\\b|\\\\bG18\\\\b|\\\\bP85\\\\b|\\\\bA70h\\\\b|\\\\bA70\\\\b|\\\\bG17\\\\b|\\\\bP18\\\\b|\\\\bA80s\\\\b|\\\\bA11s\\\\b|\\\\bP88HD\\\\b|\\\\bA80h\\\\b|\\\\bP76s\\\\b|\\\\bP76h\\\\b|\\\\bP98\\\\b|\\\\bA10HD\\\\b|\\\\bP78\\\\b|\\\\bP88\\\\b|\\\\bA11\\\\b|\\\\bA10t\\\\b|\\\\bP76a\\\\b|\\\\bP76t\\\\b|\\\\bP76e\\\\b|\\\\bP85HD\\\\b|\\\\bP85a\\\\b|\\\\bP86\\\\b|\\\\bP75HD\\\\b|\\\\bP76v\\\\b|\\\\bA12\\\\b|\\\\bP75a\\\\b|\\\\bA15\\\\b|\\\\bP76Ti\\\\b|\\\\bP81HD\\\\b|\\\\bA10\\\\b|\\\\bT760VE\\\\b|\\\\bT720HD\\\\b|\\\\bP76\\\\b|\\\\bP73\\\\b|\\\\bP71\\\\b|\\\\bP72\\\\b|\\\\bT720SE\\\\b|\\\\bC520Ti\\\\b|\\\\bT760\\\\b|\\\\bT720VE\\\\b|T720-3GE|T720-WiFi\",\n \"OndaTablet\": \"\\\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\\\b[\\\\s]+|V10 \\\\b4G\\\\b\",\n \"JaytechTablet\": \"TPC-PA762\",\n \"BlaupunktTablet\": \"Endeavour 800NG|Endeavour 1010\",\n \"DigmaTablet\": \"\\\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\\\b\",\n \"EvolioTablet\": \"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\\\bEvotab\\\\b|\\\\bNeura\\\\b\",\n \"LavaTablet\": \"QPAD E704|\\\\bIvoryS\\\\b|E-TAB IVORY|\\\\bE-TAB\\\\b\",\n \"AocTablet\": \"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712\",\n \"MpmanTablet\": \"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\\\bMPG7\\\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010\",\n \"CelkonTablet\": \"CT695|CT888|CT[\\\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\\\bCT-1\\\\b\",\n \"WolderTablet\": \"miTab \\\\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\\\b\",\n \"MediacomTablet\": \"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA\",\n \"MiTablet\": \"\\\\bMI PAD\\\\b|\\\\bHM NOTE 1W\\\\b\",\n \"NibiruTablet\": \"Nibiru M1|Nibiru Jupiter One\",\n \"NexoTablet\": \"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI\",\n \"LeaderTablet\": \"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100\",\n \"UbislateTablet\": \"UbiSlate[\\\\s]?7C\",\n \"PocketBookTablet\": \"Pocketbook\",\n \"KocasoTablet\": \"\\\\b(TB-1207)\\\\b\",\n \"HisenseTablet\": \"\\\\b(F5281|E2371)\\\\b\",\n \"Hudl\": \"Hudl HT7S3|Hudl 2\",\n \"TelstraTablet\": \"T-Hub2\",\n \"GenericTablet\": \"Android.*\\\\b97D\\\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\\\bA7EB\\\\b|CatNova8|A1_07|CT704|CT1002|\\\\bM721\\\\b|rk30sdk|\\\\bEVOTAB\\\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\\\bM6pro\\\\b|CT1020W|arc 10HD|\\\\bTP750\\\\b|\\\\bQTAQZ3\\\\b|WVT101|TM1088|KT107\"\n },\n \"oss\": {\n \"AndroidOS\": \"Android\",\n \"BlackBerryOS\": \"blackberry|\\\\bBB10\\\\b|rim tablet os\",\n \"PalmOS\": \"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino\",\n \"SymbianOS\": \"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\\\bS60\\\\b\",\n \"WindowsMobileOS\": \"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;\",\n \"WindowsPhoneOS\": \"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;\",\n \"iOS\": \"\\\\biPhone.*Mobile|\\\\biPod|\\\\biPad|AppleCoreMedia\",\n \"iPadOS\": \"CPU OS 13\",\n \"MeeGoOS\": \"MeeGo\",\n \"MaemoOS\": \"Maemo\",\n \"JavaOS\": \"J2ME\\/|\\\\bMIDP\\\\b|\\\\bCLDC\\\\b\",\n \"webOS\": \"webOS|hpwOS\",\n \"badaOS\": \"\\\\bBada\\\\b\",\n \"BREWOS\": \"BREW\"\n },\n \"uas\": {\n \"Chrome\": \"\\\\bCrMo\\\\b|CriOS|Android.*Chrome\\/[.0-9]* (Mobile)?\",\n \"Dolfin\": \"\\\\bDolfin\\\\b\",\n \"Opera\": \"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\\/[0-9.]+$|Coast\\/[0-9.]+\",\n \"Skyfire\": \"Skyfire\",\n \"Edge\": \"Mobile Safari\\/[.0-9]* Edge\",\n \"IE\": \"IEMobile|MSIEMobile\",\n \"Firefox\": \"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS\",\n \"Bolt\": \"bolt\",\n \"TeaShark\": \"teashark\",\n \"Blazer\": \"Blazer\",\n \"Safari\": \"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari\",\n \"WeChat\": \"\\\\bMicroMessenger\\\\b\",\n \"UCBrowser\": \"UC.*Browser|UCWEB\",\n \"baiduboxapp\": \"baiduboxapp\",\n \"baidubrowser\": \"baidubrowser\",\n \"DiigoBrowser\": \"DiigoBrowser\",\n \"Mercury\": \"\\\\bMercury\\\\b\",\n \"ObigoBrowser\": \"Obigo\",\n \"NetFront\": \"NF-Browser\",\n \"GenericBrowser\": \"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger\",\n \"PaleMoon\": \"Android.*PaleMoon|Mobile.*PaleMoon\"\n },\n \"props\": {\n \"Mobile\": \"Mobile\\/[VER]\",\n \"Build\": \"Build\\/[VER]\",\n \"Version\": \"Version\\/[VER]\",\n \"VendorID\": \"VendorID\\/[VER]\",\n \"iPad\": \"iPad.*CPU[a-z ]+[VER]\",\n \"iPhone\": \"iPhone.*CPU[a-z ]+[VER]\",\n \"iPod\": \"iPod.*CPU[a-z ]+[VER]\",\n \"Kindle\": \"Kindle\\/[VER]\",\n \"Chrome\": [\n \"Chrome\\/[VER]\",\n \"CriOS\\/[VER]\",\n \"CrMo\\/[VER]\"\n ],\n \"Coast\": [\n \"Coast\\/[VER]\"\n ],\n \"Dolfin\": \"Dolfin\\/[VER]\",\n \"Firefox\": [\n \"Firefox\\/[VER]\",\n \"FxiOS\\/[VER]\"\n ],\n \"Fennec\": \"Fennec\\/[VER]\",\n \"Edge\": \"Edge\\/[VER]\",\n \"IE\": [\n \"IEMobile\\/[VER];\",\n \"IEMobile [VER]\",\n \"MSIE [VER];\",\n \"Trident\\/[0-9.]+;.*rv:[VER]\"\n ],\n \"NetFront\": \"NetFront\\/[VER]\",\n \"NokiaBrowser\": \"NokiaBrowser\\/[VER]\",\n \"Opera\": [\n \" OPR\\/[VER]\",\n \"Opera Mini\\/[VER]\",\n \"Version\\/[VER]\"\n ],\n \"Opera Mini\": \"Opera Mini\\/[VER]\",\n \"Opera Mobi\": \"Version\\/[VER]\",\n \"UCBrowser\": [\n \"UCWEB[VER]\",\n \"UC.*Browser\\/[VER]\"\n ],\n \"MQQBrowser\": \"MQQBrowser\\/[VER]\",\n \"MicroMessenger\": \"MicroMessenger\\/[VER]\",\n \"baiduboxapp\": \"baiduboxapp\\/[VER]\",\n \"baidubrowser\": \"baidubrowser\\/[VER]\",\n \"SamsungBrowser\": \"SamsungBrowser\\/[VER]\",\n \"Iron\": \"Iron\\/[VER]\",\n \"Safari\": [\n \"Version\\/[VER]\",\n \"Safari\\/[VER]\"\n ],\n \"Skyfire\": \"Skyfire\\/[VER]\",\n \"Tizen\": \"Tizen\\/[VER]\",\n \"Webkit\": \"webkit[ \\/][VER]\",\n \"PaleMoon\": \"PaleMoon\\/[VER]\",\n \"Gecko\": \"Gecko\\/[VER]\",\n \"Trident\": \"Trident\\/[VER]\",\n \"Presto\": \"Presto\\/[VER]\",\n \"Goanna\": \"Goanna\\/[VER]\",\n \"iOS\": \" \\\\bi?OS\\\\b [VER][ ;]{1}\",\n \"Android\": \"Android [VER]\",\n \"BlackBerry\": [\n \"BlackBerry[\\\\w]+\\/[VER]\",\n \"BlackBerry.*Version\\/[VER]\",\n \"Version\\/[VER]\"\n ],\n \"BREW\": \"BREW [VER]\",\n \"Java\": \"Java\\/[VER]\",\n \"Windows Phone OS\": [\n \"Windows Phone OS [VER]\",\n \"Windows Phone [VER]\"\n ],\n \"Windows Phone\": \"Windows Phone [VER]\",\n \"Windows CE\": \"Windows CE\\/[VER]\",\n \"Windows NT\": \"Windows NT [VER]\",\n \"Symbian\": [\n \"SymbianOS\\/[VER]\",\n \"Symbian\\/[VER]\"\n ],\n \"webOS\": [\n \"webOS\\/[VER]\",\n \"hpwOS\\/[VER];\"\n ]\n },\n \"utils\": {\n \"Bot\": \"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp\",\n \"MobileBot\": \"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\\/M1A1-R2D2\",\n \"DesktopMode\": \"WPDesktop\",\n \"TV\": \"SonyDTV|HbbTV\",\n \"WebKit\": \"(webkit)[ \\/]([\\\\w.]+)\",\n \"Console\": \"\\\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\\\b\",\n \"Watch\": \"SM-V700\"\n }\n};\n\n // following patterns come from http://detectmobilebrowsers.com/\n impl.detectMobileBrowsers = {\n fullPattern: /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,\n shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,\n tabletPattern: /android|ipad|playbook|silk/i\n };\n\n var hasOwnProp = Object.prototype.hasOwnProperty,\n isArray;\n\n impl.FALLBACK_PHONE = 'UnknownPhone';\n impl.FALLBACK_TABLET = 'UnknownTablet';\n impl.FALLBACK_MOBILE = 'UnknownMobile';\n\n isArray = ('isArray' in Array) ?\n Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; };\n\n function equalIC(a, b) {\n return a != null && b != null && a.toLowerCase() === b.toLowerCase();\n }\n\n function containsIC(array, value) {\n var valueLC, i, len = array.length;\n if (!len || !value) {\n return false;\n }\n valueLC = value.toLowerCase();\n for (i = 0; i < len; ++i) {\n if (valueLC === array[i].toLowerCase()) {\n return true;\n }\n }\n return false;\n }\n\n function convertPropsToRegExp(object) {\n for (var key in object) {\n if (hasOwnProp.call(object, key)) {\n object[key] = new RegExp(object[key], 'i');\n }\n }\n }\n\n function prepareUserAgent(userAgent) {\n return (userAgent || '').substr(0, 500); // mitigate vulnerable to ReDoS\n }\n\n (function init() {\n var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules;\n for (key in mobileDetectRules.props) {\n if (hasOwnProp.call(mobileDetectRules.props, key)) {\n values = mobileDetectRules.props[key];\n if (!isArray(values)) {\n values = [values];\n }\n len = values.length;\n for (i = 0; i < len; ++i) {\n value = values[i];\n verPos = value.indexOf('[VER]');\n if (verPos >= 0) {\n value = value.substring(0, verPos) + '([\\\\w._\\\\+]+)' + value.substring(verPos + 5);\n }\n values[i] = new RegExp(value, 'i');\n }\n mobileDetectRules.props[key] = values;\n }\n }\n convertPropsToRegExp(mobileDetectRules.oss);\n convertPropsToRegExp(mobileDetectRules.phones);\n convertPropsToRegExp(mobileDetectRules.tablets);\n convertPropsToRegExp(mobileDetectRules.uas);\n convertPropsToRegExp(mobileDetectRules.utils);\n\n // copy some patterns to oss0 which are tested first (see issue#15)\n mobileDetectRules.oss0 = {\n WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS,\n WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS\n };\n }());\n\n /**\n * Test userAgent string against a set of rules and find the first matched key.\n * @param {Object} rules (key is String, value is RegExp)\n * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').\n * @returns {String|null} the matched key if found, otherwise <tt>null</tt>\n * @private\n */\n impl.findMatch = function(rules, userAgent) {\n for (var key in rules) {\n if (hasOwnProp.call(rules, key)) {\n if (rules[key].test(userAgent)) {\n return key;\n }\n }\n }\n return null;\n };\n\n /**\n * Test userAgent string against a set of rules and return an array of matched keys.\n * @param {Object} rules (key is String, value is RegExp)\n * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').\n * @returns {Array} an array of matched keys, may be empty when there is no match, but not <tt>null</tt>\n * @private\n */\n impl.findMatches = function(rules, userAgent) {\n var result = [];\n for (var key in rules) {\n if (hasOwnProp.call(rules, key)) {\n if (rules[key].test(userAgent)) {\n result.push(key);\n }\n }\n }\n return result;\n };\n\n /**\n * Check the version of the given property in the User-Agent.\n *\n * @param {String} propertyName\n * @param {String} userAgent\n * @return {String} version or <tt>null</tt> if version not found\n * @private\n */\n impl.getVersionStr = function (propertyName, userAgent) {\n var props = impl.mobileDetectRules.props, patterns, i, len, match;\n if (hasOwnProp.call(props, propertyName)) {\n patterns = props[propertyName];\n len = patterns.length;\n for (i = 0; i < len; ++i) {\n match = patterns[i].exec(userAgent);\n if (match !== null) {\n return match[1];\n }\n }\n }\n return null;\n };\n\n /**\n * Check the version of the given property in the User-Agent.\n * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)\n *\n * @param {String} propertyName\n * @param {String} userAgent\n * @return {Number} version or <tt>NaN</tt> if version not found\n * @private\n */\n impl.getVersion = function (propertyName, userAgent) {\n var version = impl.getVersionStr(propertyName, userAgent);\n return version ? impl.prepareVersionNo(version) : NaN;\n };\n\n /**\n * Prepare the version number.\n *\n * @param {String} version\n * @return {Number} the version number as a floating number\n * @private\n */\n impl.prepareVersionNo = function (version) {\n var numbers;\n\n numbers = version.split(/[a-z._ \\/\\-]/i);\n if (numbers.length === 1) {\n version = numbers[0];\n }\n if (numbers.length > 1) {\n version = numbers[0] + '.';\n numbers.shift();\n version += numbers.join('');\n }\n return Number(version);\n };\n\n impl.isMobileFallback = function (userAgent) {\n return impl.detectMobileBrowsers.fullPattern.test(userAgent) ||\n impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4));\n };\n\n impl.isTabletFallback = function (userAgent) {\n return impl.detectMobileBrowsers.tabletPattern.test(userAgent);\n };\n\n impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) {\n if (cache.mobile !== undefined) {\n return;\n }\n var phone, tablet, phoneSized;\n\n // first check for stronger tablet rules, then phone (see issue#5)\n tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent);\n if (tablet) {\n cache.mobile = cache.tablet = tablet;\n cache.phone = null;\n return; // unambiguously identified as tablet\n }\n\n phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent);\n if (phone) {\n cache.mobile = cache.phone = phone;\n cache.tablet = null;\n return; // unambiguously identified as phone\n }\n\n // our rules haven't found a match -> try more general fallback rules\n if (impl.isMobileFallback(userAgent)) {\n phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth);\n if (phoneSized === undefined) {\n cache.mobile = impl.FALLBACK_MOBILE;\n cache.tablet = cache.phone = null;\n } else if (phoneSized) {\n cache.mobile = cache.phone = impl.FALLBACK_PHONE;\n cache.tablet = null;\n } else {\n cache.mobile = cache.tablet = impl.FALLBACK_TABLET;\n cache.phone = null;\n }\n } else if (impl.isTabletFallback(userAgent)) {\n cache.mobile = cache.tablet = impl.FALLBACK_TABLET;\n cache.phone = null;\n } else {\n // not mobile at all!\n cache.mobile = cache.tablet = cache.phone = null;\n }\n };\n\n // t is a reference to a MobileDetect instance\n impl.mobileGrade = function (t) {\n // impl note:\n // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version.\n // When changes are made in Mobile_Detect.php, copy this method and replace:\n // $this-> / t.\n // self::MOBILE_GRADE_(.) / '$1'\n // , self::VERSION_TYPE_FLOAT / (nothing)\n // isIOS() / os('iOS')\n // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE\n var $isMobile = t.mobile() !== null;\n\n if (\n // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1)\n t.os('iOS') && t.version('iPad')>=4.3 ||\n t.os('iOS') && t.version('iPhone')>=3.1 ||\n t.os('iOS') && t.version('iPod')>=3.1 ||\n\n // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)\n // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM\n // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices\n // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7\n ( t.version('Android')>2.1 && t.is('Webkit') ) ||\n\n // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800\n t.version('Windows Phone OS')>=7.0 ||\n\n // Blackberry 7 - Tested on BlackBerry Torch 9810\n // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670\n t.is('BlackBerry') && t.version('BlackBerry')>=6.0 ||\n // Blackberry Playbook (1.0-2.0) - Tested on PlayBook\n t.match('Playbook.*Tablet') ||\n\n // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0)\n ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) ||\n // Palm WebOS 3.0 - Tested on HP TouchPad\n t.match('hp.*TouchPad') ||\n\n // Firefox Mobile (12 Beta) - Tested on Android 2.3 device\n ( t.is('Firefox') && t.version('Firefox')>=12 ) ||\n\n // Chrome for Android - Tested on Android 4.0, 4.1 device\n ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) ||\n\n // Skyfire 4.1 - Tested on Android 2.3 device\n ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) ||\n\n // Opera Mobile 11.5-12: Tested on Android 2.3\n ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) ||\n\n // Meego 1.2 - Tested on Nokia 950 and N9\n t.is('MeeGoOS') ||\n\n // Tizen (pre-release) - Tested on early hardware\n t.is('Tizen') ||\n\n // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser\n // @todo: more tests here!\n t.is('Dolfin') && t.version('Bada')>=2.0 ||\n\n // UC Browser - Tested on Android 2.3 device\n ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) ||\n\n // Kindle 3 and Fire - Tested on the built-in WebKit browser for each\n ( t.match('Kindle Fire') ||\n t.is('Kindle') && t.version('Kindle')>=3.0 ) ||\n\n // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet\n t.is('AndroidOS') && t.is('NookTablet') ||\n\n // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7\n t.version('Chrome')>=11 && !$isMobile ||\n\n // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7\n t.version('Safari')>=5.0 && !$isMobile ||\n\n // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7\n t.version('Firefox')>=4.0 && !$isMobile ||\n\n // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7\n t.version('MSIE')>=7.0 && !$isMobile ||\n\n // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7\n // @reference: http://my.opera.com/community/openweb/idopera/\n t.version('Opera')>=10 && !$isMobile\n\n ){\n return 'A';\n }\n\n if (\n t.os('iOS') && t.version('iPad')<4.3 ||\n t.os('iOS') && t.version('iPhone')<3.1 ||\n t.os('iOS') && t.version('iPod')<3.1 ||\n\n // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770\n t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 ||\n\n //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3\n ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 &&\n (t.version('Android')>=2.3 || t.is('iOS')) ) ||\n\n // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)\n t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||\n\n // @todo: report this (tested on Nokia N71)\n t.version('Opera Mobi')>=11 && t.is('SymbianOS')\n ){\n return 'B';\n }\n\n if (\n // Blackberry 4.x - Tested on the Curve 8330\n t.version('BlackBerry')<5.0 ||\n // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)\n t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2\n\n ){\n return 'C';\n }\n\n //All older smartphone platforms and featurephones - Any device that doesn't support media queries\n //will receive the basic, C grade experience.\n return 'C';\n };\n\n impl.detectOS = function (ua) {\n return impl.findMatch(impl.mobileDetectRules.oss0, ua) ||\n impl.findMatch(impl.mobileDetectRules.oss, ua);\n };\n\n impl.getDeviceSmallerSide = function () {\n return window.screen.width < window.screen.height ?\n window.screen.width :\n window.screen.height;\n };\n\n /**\n * Constructor for MobileDetect object.\n * <br>\n * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.<br>\n * <div style=\"background-color: #d9edf7; border: 1px solid #bce8f1; color: #3a87ad; padding: 14px; border-radius: 2px; margin-top: 20px\">\n * <strong>Find information how to download and install:</strong>\n * <a href=\"https://github.com/hgoebl/mobile-detect.js/\">github.com/hgoebl/mobile-detect.js/</a>\n * </div>\n *\n * @example <pre>\n * var md = new MobileDetect(window.navigator.userAgent);\n * if (md.mobile()) {\n * location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';\n * }\n * </pre>\n *\n * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent']\n * @param {number} [maxPhoneWidth=600] <strong>only for browsers</strong> specify a value for the maximum\n * width of smallest device side (in logical \"CSS\" pixels) until a device detected as mobile will be handled\n * as phone.\n * This is only used in cases where the device cannot be classified as phone or tablet.<br>\n * See <a href=\"http://developer.android.com/guide/practices/screens_support.html\">Declaring Tablet Layouts\n * for Android</a>.<br>\n * If you provide a value < 0, then this \"fuzzy\" check is disabled.\n * @constructor\n * @global\n */\n function MobileDetect(userAgent, maxPhoneWidth) {\n this.ua = prepareUserAgent(userAgent);\n this._cache = {};\n //600dp is typical 7\" tablet minimum width\n this.maxPhoneWidth = maxPhoneWidth || 600;\n }\n\n MobileDetect.prototype = {\n constructor: MobileDetect,\n\n /**\n * Returns the detected phone or tablet type or <tt>null</tt> if it is not a mobile device.\n * <br>\n * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.<br>\n * <br>\n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of <a href=\"http://detectmobilebrowsers.com/\">detectmobilebrowsers.com</a>. If this test\n * is positive, a value of <code>UnknownPhone</code>, <code>UnknownTablet</code> or\n * <code>UnknownMobile</code> is returned.<br>\n * When used in browser, the decision whether phone or tablet is made based on <code>screen.width/height</code>.<br>\n * <br>\n * When used server-side (node.js), there is no way to tell the difference between <code>UnknownTablet</code>\n * and <code>UnknownMobile</code>, so you will get <code>UnknownMobile</code> here.<br>\n * Be aware that since v1.0.0 in this special case you will get <code>UnknownMobile</code> only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned <code>UnknownMobile</code> which was tedious to use.\n * <br>\n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key for the phone family or tablet family, e.g. \"Nexus\".\n * @function MobileDetect#mobile\n */\n mobile: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.mobile;\n },\n\n /**\n * Returns the detected phone type/family string or <tt>null</tt>.\n * <br>\n * The returned tablet (family or producer) is one of following keys:<br>\n * <br><tt>iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus,\n * NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley,\n * Wolfgang, Alcatel, Nintendo, Amoi, INQ, OnePlus, GenericPhone</tt><br>\n * <br>\n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of <a href=\"http://detectmobilebrowsers.com/\">detectmobilebrowsers.com</a>. If this test\n * is positive, a value of <code>UnknownPhone</code> or <code>UnknownMobile</code> is returned.<br>\n * When used in browser, the decision whether phone or tablet is made based on <code>screen.width/height</code>.<br>\n * <br>\n * When used server-side (node.js), there is no way to tell the difference between <code>UnknownTablet</code>\n * and <code>UnknownMobile</code>, so you will get <code>null</code> here, while {@link MobileDetect#mobile}\n * will return <code>UnknownMobile</code>.<br>\n * Be aware that since v1.0.0 in this special case you will get <code>UnknownMobile</code> only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned <code>UnknownMobile</code> which was tedious to use.\n * <br>\n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key of the phone family or producer, e.g. \"iPhone\"\n * @function MobileDetect#phone\n */\n phone: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.phone;\n },\n\n /**\n * Returns the detected tablet type/family string or <tt>null</tt>.\n * <br>\n * The returned tablet (family or producer) is one of following keys:<br>\n * <br><tt>iPad, NexusTablet, GoogleTablet, SamsungTablet, Kindle, SurfaceTablet,\n * HPTablet, AsusTablet, BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet,\n * AcerTablet, ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet,\n * LenovoTablet, DellTablet, YarvikTablet, MedionTablet, ArnovaTablet,\n * IntensoTablet, IRUTablet, MegafonTablet, EbodaTablet, AllViewTablet,\n * ArchosTablet, AinolTablet, NokiaLumiaTablet, SonyTablet, PhilipsTablet,\n * CubeTablet, CobyTablet, MIDTablet, MSITablet, SMiTTablet, RockChipTablet,\n * FlyTablet, bqTablet, HuaweiTablet, NecTablet, PantechTablet, BronchoTablet,\n * VersusTablet, ZyncTablet, PositivoTablet, NabiTablet, KoboTablet, DanewTablet,\n * TexetTablet, PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet,\n * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet,\n * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet,\n * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet,\n * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet,\n * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet,\n * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet,\n * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet,\n * VerizonTablet, OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet,\n * OndaTablet, JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet,\n * LavaTablet, AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MediacomTablet,\n * MiTablet, NibiruTablet, NexoTablet, LeaderTablet, UbislateTablet,\n * PocketBookTablet, KocasoTablet, HisenseTablet, Hudl, TelstraTablet,\n * GenericTablet</tt><br>\n * <br>\n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of <a href=\"http://detectmobilebrowsers.com/\">detectmobilebrowsers.com</a>. If this test\n * is positive, a value of <code>UnknownTablet</code> or <code>UnknownMobile</code> is returned.<br>\n * When used in browser, the decision whether phone or tablet is made based on <code>screen.width/height</code>.<br>\n * <br>\n * When used server-side (node.js), there is no way to tell the difference between <code>UnknownTablet</code>\n * and <code>UnknownMobile</code>, so you will get <code>null</code> here, while {@link MobileDetect#mobile}\n * will return <code>UnknownMobile</code>.<br>\n * Be aware that since v1.0.0 in this special case you will get <code>UnknownMobile</code> only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned <code>UnknownMobile</code> which was tedious to use.\n * <br>\n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key of the tablet family or producer, e.g. \"SamsungTablet\"\n * @function MobileDetect#tablet\n */\n tablet: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.tablet;\n },\n\n /**\n * Returns the (first) detected user-agent string or <tt>null</tt>.\n * <br>\n * The returned user-agent is one of following keys:<br>\n * <br><tt>Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,\n * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,\n * ObigoBrowser, NetFront, GenericBrowser, PaleMoon</tt><br>\n * <br>\n * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare\n * cases where a mobile device pretends to be more than one particular browser. You can get the\n * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by\n * providing one of the defined keys as first argument to {@link MobileDetect#is}.\n *\n * @returns {String} the key for the detected user-agent or <tt>null</tt>\n * @function MobileDetect#userAgent\n */\n userAgent: function () {\n if (this._cache.userAgent === undefined) {\n this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua);\n }\n return this._cache.userAgent;\n },\n\n /**\n * Returns all detected user-agent strings.\n * <br>\n * The array is empty or contains one or more of following keys:<br>\n * <br><tt>Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,\n * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,\n * ObigoBrowser, NetFront, GenericBrowser, PaleMoon</tt><br>\n * <br>\n * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare\n * cases where a mobile device pretends to be more than one particular browser. You can get the\n * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by\n * providing one of the defined keys as first argument to {@link MobileDetect#is}.\n *\n * @returns {Array} the array of detected user-agent keys or <tt>[]</tt>\n * @function MobileDetect#userAgents\n */\n userAgents: function () {\n if (this._cache.userAgents === undefined) {\n this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua);\n }\n return this._cache.userAgents;\n },\n\n /**\n * Returns the detected operating system string or <tt>null</tt>.\n * <br>\n * The operating system is one of following keys:<br>\n * <br><tt>AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS,\n * iOS, iPadOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS</tt><br>\n *\n * @returns {String} the key for the detected operating system.\n * @function MobileDetect#os\n */\n os: function () {\n if (this._cache.os === undefined) {\n this._cache.os = impl.detectOS(this.ua);\n }\n return this._cache.os;\n },\n\n /**\n * Get the version (as Number) of the given property in the User-Agent.\n * <br>\n * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)\n *\n * @param {String} key a key defining a thing which has a version.<br>\n * You can use one of following keys:<br>\n * <br><tt>Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,\n * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,\n * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,\n * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident,\n * Presto, Goanna, iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows\n * Phone, Windows CE, Windows NT, Symbian, webOS</tt><br>\n *\n * @returns {Number} the version as float or <tt>NaN</tt> if User-Agent doesn't contain this version.\n * Be careful when comparing this value with '==' operator!\n * @function MobileDetect#version\n */\n version: function (key) {\n return impl.getVersion(key, this.ua);\n },\n\n /**\n * Get the version (as String) of the given property in the User-Agent.\n * <br>\n *\n * @param {String} key a key defining a thing which has a version.<br>\n * You can use one of following keys:<br>\n * <br><tt>Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,\n * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,\n * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,\n * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident,\n * Presto, Goanna, iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows\n * Phone, Windows CE, Windows NT, Symbian, webOS</tt><br>\n *\n * @returns {String} the \"raw\" version as String or <tt>null</tt> if User-Agent doesn't contain this version.\n *\n * @function MobileDetect#versionStr\n */\n versionStr: function (key) {\n return impl.getVersionStr(key, this.ua);\n },\n\n /**\n * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string.\n *\n * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or\n * tablet family.<br>\n * For a complete list of possible values, see {@link MobileDetect#userAgent},\n * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.<br>\n * Additionally you have following keys:<br>\n * <br><tt>Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch</tt><br>\n *\n * @returns {boolean} <tt>true</tt> when the given key is one of the defined keys of userAgent, os, phone,\n * tablet or one of the listed additional keys, otherwise <tt>false</tt>\n * @function MobileDetect#is\n */\n is: function (key) {\n return containsIC(this.userAgents(), key) ||\n equalIC(key, this.os()) ||\n equalIC(key, this.phone()) ||\n equalIC(key, this.tablet()) ||\n containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key);\n },\n\n /**\n * Do a quick test against navigator::userAgent.\n *\n * @param {String|RegExp} pattern the pattern, either as String or RegExp\n * (a string will be converted to a case-insensitive RegExp).\n * @returns {boolean} <tt>true</tt> when the pattern matches, otherwise <tt>false</tt>\n * @function MobileDetect#match\n */\n match: function (pattern) {\n if (!(pattern instanceof RegExp)) {\n pattern = new RegExp(pattern, 'i');\n }\n return pattern.test(this.ua);\n },\n\n /**\n * Checks whether the mobile device can be considered as phone regarding <code>screen.width</code>.\n * <br>\n * Obviously this method makes sense in browser environments only (not for Node.js)!\n * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.<br>\n * The argument is optional and if not present or falsy, the value of the constructor is taken.\n * @returns {boolean|undefined} <code>undefined</code> if screen size wasn't detectable, else <code>true</code>\n * when screen.width is less or equal to maxPhoneWidth, otherwise <code>false</code>.<br>\n * Will always return <code>undefined</code> server-side.\n */\n isPhoneSized: function (maxPhoneWidth) {\n return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth);\n },\n\n /**\n * Returns the mobile grade ('A', 'B', 'C').\n *\n * @returns {String} one of the mobile grades ('A', 'B', 'C').\n * @function MobileDetect#mobileGrade\n */\n mobileGrade: function () {\n if (this._cache.grade === undefined) {\n this._cache.grade = impl.mobileGrade(this);\n }\n return this._cache.grade;\n }\n };\n\n // environment-dependent\n if (typeof window !== 'undefined' && window.screen) {\n MobileDetect.isPhoneSized = function (maxPhoneWidth) {\n return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth;\n };\n } else {\n MobileDetect.isPhoneSized = function () {};\n }\n\n // should not be replaced by a completely new object - just overwrite existing methods\n MobileDetect._impl = impl;\n \n MobileDetect.version = '1.4.4 2019-09-21';\n\n return MobileDetect;\n}); // end of call of define()\n})((function (undefined) {\n if (typeof module !== 'undefined' && module.exports) {\n return function (factory) { module.exports = factory(); };\n } else if (typeof define === 'function' && define.amd) {\n return define;\n } else if (typeof window !== 'undefined') {\n return function (factory) { window.MobileDetect = factory(); };\n } else {\n // please file a bug if you get this error!\n throw new Error('unknown environment');\n }\n})());","/**!\n * lg-fullscreen.js | 1.2.0 | May 20th 2020\n * http://sachinchoolur.github.io/lg-fullscreen.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgFullscreen = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof exports !== \"undefined\") {\n factory();\n } else {\n var mod = {\n exports: {}\n };\n factory();\n global.lgFullscreen = mod.exports;\n }\n})(this, function () {\n 'use strict';\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var fullscreenDefaults = {\n fullScreen: true\n };\n\n function isFullScreen() {\n return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n }\n\n var Fullscreen = function Fullscreen(element) {\n\n this.el = element;\n\n this.core = window.lgData[this.el.getAttribute('lg-uid')];\n this.core.s = _extends({}, fullscreenDefaults, this.core.s);\n\n this.init();\n\n return this;\n };\n\n Fullscreen.prototype.init = function () {\n var fullScreen = '';\n if (this.core.s.fullScreen) {\n\n // check for fullscreen browser support\n if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled && !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {\n return;\n } else {\n fullScreen = '<button aria-label=\"Toggle fullscreen\" class=\"lg-fullscreen lg-icon\"></button>';\n this.core.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', fullScreen);\n this.fullScreen();\n }\n }\n };\n\n Fullscreen.prototype.requestFullscreen = function () {\n var el = document.documentElement;\n if (el.requestFullscreen) {\n el.requestFullscreen();\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen();\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen();\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen();\n }\n };\n\n Fullscreen.prototype.exitFullscreen = function () {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n };\n\n // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n Fullscreen.prototype.fullScreen = function () {\n var _this = this;\n\n utils.on(document, 'fullscreenchange.lgfullscreen webkitfullscreenchange.lgfullscreen mozfullscreenchange.lgfullscreen MSFullscreenChange.lgfullscreen', function () {\n if (utils.hasClass(_this.core.outer, 'lg-fullscreen-on')) {\n utils.removeClass(_this.core.outer, 'lg-fullscreen-on');\n } else {\n utils.addClass(_this.core.outer, 'lg-fullscreen-on');\n }\n });\n\n utils.on(this.core.outer.querySelector('.lg-fullscreen'), 'click.lg', function () {\n if (isFullScreen()) {\n _this.exitFullscreen();\n } else {\n _this.requestFullscreen();\n }\n });\n };\n\n Fullscreen.prototype.destroy = function () {\n\n // exit from fullscreen if activated\n if (isFullScreen()) {\n this.exitFullscreen();\n }\n\n utils.off(document, '.lgfullscreen');\n };\n\n window.lgModules.fullscreen = Fullscreen;\n});\n\n},{}]},{},[1])(1)\n});\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n"],"sourceRoot":""}