{"version":3,"sources":["webpack:///./src/components/freemium/freemium-mock.ts","webpack:///./node_modules/core-js/internals/delete-property-or-throw.js","webpack:///./src/components/creatives/Fullscreen.vue?96dc","webpack:///./src/lib/pusher/index.ts","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./src/components/creatives/Leaderboard.vue?f940","webpack:///./src/components/creatives/components/QrCode.vue?9e37","webpack:///./node_modules/vue-qr/src/lib/awesome-qr.js","webpack:///./src/lib/types/streamer-freemium/freemium-setup.ts","webpack:///./node_modules/js-binary-schema-parser/lib/schemas/gif.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./src/components/creatives/Wrapper.vue?ab8f","webpack:///./node_modules/core-js/modules/es.array.unshift.js","webpack:///./src/components/creatives/YandexFS.vue?2599","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/vue-qr/src/lib/gif.js/TypedNeuQuant.js","webpack:///./node_modules/vue-qr/src/lib/gif.js/LZWEncoder.js","webpack:///./node_modules/vue-qr/src/lib/gif.js/GIFEncoder.js","webpack:///./src/components/creatives/YandexFS.vue?b647","webpack:///./node_modules/laravel-echo/dist/echo.js","webpack:///./src/lib/pusher/constants/pusher-events.ts","webpack:///./node_modules/js-binary-schema-parser/lib/parsers/uint8.js","webpack:///./node_modules/core-js/modules/es.string.replace-all.js","webpack:///./src/lib/types/streamer-freemium/freemium-alerts.ts","webpack:///./src/components/creatives/components/AdvertState.vue?2bab","webpack:///./node_modules/pusher-js/dist/web/pusher.js","webpack:///./src/components/creatives/GoogleAdManager.vue?d2b5","webpack:///./src/views/Widget/constants/default-widget.ts","webpack:///./src/views/Widget/components/Creatives.vue?adc8","webpack:///./src/lib/types/widget.ts","webpack:///./src/lib/adapters/creativePayloadAdapter.ts","webpack:///./src/views/Widget/class/Ssp.ts","webpack:///./src/views/Widget/class/Preparer.ts","webpack:///./node_modules/core-js/internals/regexp-get-flags.js","webpack:///./src/views/Widget/types.ts","webpack:///./src/components/creatives/Pip.vue?e57a","webpack:///./node_modules/vue-qr/src/lib/gifuct-js/deinterlace.js","webpack:///./node_modules/vue-qr/src/lib/gifuct-js/lzw.js","webpack:///./node_modules/vue-qr/src/lib/gifuct-js/index.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/vue-qr/src/lib/qrcode.js","webpack:///./src/views/Widget/components/Creatives.vue","webpack:///./src/components/creatives/Leaderboard.vue","webpack:///./src/components/creatives/utils/use-interval.ts","webpack:///./src/components/creatives/Leaderboard.vue?aed4","webpack:///./src/components/creatives/Leaderboard.vue?6d62","webpack:///./src/components/creatives/Leaderboard.vue?7551","webpack:///./src/components/creatives/Fullscreen.vue","webpack:///./src/components/creatives/utils/use-pixels.ts","webpack:///./src/components/creatives/Fullscreen.vue?07a9","webpack:///./src/components/creatives/Fullscreen.vue?f5a7","webpack:///./src/components/creatives/Fullscreen.vue?529e","webpack:///./src/components/creatives/Pip.vue","webpack:///./src/components/creatives/Pip.vue?a303","webpack:///./src/components/creatives/Pip.vue?35c1","webpack:///./src/components/creatives/Pip.vue?3336","webpack:///./src/components/creatives/Wrapper.vue","webpack:///./src/components/creatives/components/AdvertState.vue","webpack:///./src/components/creatives/utils/use-time.ts","webpack:///./src/components/creatives/utils/use-advert-state.ts","webpack:///./src/components/creatives/components/AdvertState.vue?8fe2","webpack:///./src/components/creatives/components/AdvertState.vue?fa9c","webpack:///./src/components/creatives/components/AdvertState.vue?383e","webpack:///./src/components/creatives/components/Loader.vue","webpack:///./src/components/creatives/components/Loader.vue?360b","webpack:///./src/components/creatives/components/Loader.vue?5b67","webpack:///./src/components/creatives/components/Loader.vue?ac92","webpack:///./src/components/creatives/components/QrCode.vue","webpack:///./node_modules/vue-qr/src/packages/vue-qr.vue","webpack:///./node_modules/vue-qr/src/packages/util.js","webpack:///./node_modules/vue-qr/src/packages/readAsArrayBuffer.js","webpack:///node_modules/vue-qr/src/packages/vue-qr.vue","webpack:///./node_modules/vue-qr/src/packages/vue-qr.vue?e9c3","webpack:///./node_modules/vue-qr/src/packages/vue-qr.vue?61f8","webpack:///./src/components/creatives/components/QrCode.vue?16bd","webpack:///./src/components/creatives/components/QrCode.vue?2764","webpack:///./src/components/creatives/components/QrCode.vue?f345","webpack:///./src/components/creatives/Wrapper.vue?1bbe","webpack:///./src/components/creatives/Wrapper.vue?9a82","webpack:///./src/components/creatives/Wrapper.vue?4988","webpack:///./src/components/creatives/YandexFS.vue","webpack:///./src/components/creatives/YandexFS.vue?7b3a","webpack:///./src/components/creatives/YandexFS.vue?c96b","webpack:///./src/components/creatives/YandexFS.vue?06f0","webpack:///./src/components/creatives/YandexText.vue","webpack:///./src/components/creatives/YandexText.vue?3361","webpack:///./src/components/creatives/YandexText.vue?b858","webpack:///./src/components/creatives/YandexText.vue?c807","webpack:///./src/components/creatives/Custom.vue","webpack:///./src/components/creatives/Custom.vue?fb93","webpack:///./src/components/creatives/Custom.vue?2f37","webpack:///./src/components/creatives/Custom.vue?d632","webpack:///./src/components/creatives/ChatbotText.vue","webpack:///./src/components/creatives/ChatbotText.vue?0bbe","webpack:///./src/components/creatives/ChatbotText.vue?a220","webpack:///./src/components/creatives/ChatbotText.vue?53e0","webpack:///./src/components/creatives/GoogleAdManager.vue","webpack:///./src/components/creatives/GoogleAdManager.vue?2315","webpack:///./src/components/creatives/GoogleAdManager.vue?726c","webpack:///./src/components/creatives/GoogleAdManager.vue?088f","webpack:///./src/views/Widget/components/Creatives.vue?8ff7","webpack:///./src/views/Widget/components/Creatives.vue?aec9","webpack:///./src/views/Widget/components/Creatives.vue?87e0","webpack:///./node_modules/canvas/browser.js","webpack:///./src/components/creatives/components/Loader.vue?1487","webpack:///./src/components/creatives/Custom.vue?ec88","webpack:///./src/lib/api/modules/widget/freemium.ts","webpack:///./src/lib/types/error-message.ts","webpack:///./src/views/Widget/class/Chatbot.ts","webpack:///./src/views/Widget/class/Freemium/Chat.ts","webpack:///./src/views/Widget/class/Freemium/Goal.ts","webpack:///./src/views/Widget/class/Freemium/Poll.ts","webpack:///./src/views/Widget/class/Freemium/Preview.ts","webpack:///./src/lib/helpers/getRandomEmoji.ts","webpack:///./src/views/Widget/class/Freemium/Supporters.ts","webpack:///./src/views/Widget/class/Freemium/index.ts","webpack:///./src/views/Widget/constants/delays.ts","webpack:///./src/views/Widget/utils/preloadUtils.ts","webpack:///./src/views/Widget/class/ConvertionAlert.ts","webpack:///./src/views/Widget/class/CreativesLoop.ts","webpack:///./src/views/Widget/class/CreativeTimer.ts","webpack:///./src/views/Widget/utils/preload.ts","webpack:///./src/views/Widget/utils/get-creative-duration.ts","webpack:///./src/views/Widget/utils/wait.ts","webpack:///./src/views/Widget/class/CreativesManager.ts","webpack:///./src/views/Widget/class/Pusher.ts","webpack:///./src/views/Widget/class/RequestLoop.ts","webpack:///./src/lib/api/screenshot-instance.ts","webpack:///./src/views/Widget/class/Screenshot.ts","webpack:///./src/views/Widget/class/Widget.ts","webpack:///./node_modules/js-binary-schema-parser/lib/index.js","webpack:///./node_modules/canvas/lib/parse-font.js","webpack:///./src/lib/types/platform.ts"],"names":["demoGoal","id","title","description","currency","Currency","USD","publicTotal","total","value","status","position","FreemiumPosition","LEFT_TOP_CORNER","demoPoll","question","answers","duration","remainder_duration","votes_total","RIGHT_TOP_CORNER","end_condition","max_votes","supporters","name","updatedAt","demoResults","goalProgress","pollResults","top","topToday","recent","tryToString","$TypeError","TypeError","module","exports","O","P","window","Pusher","url","pusher","slug","key","process","cluster","subscribersCount","echo","Echo","broadcaster","forceTLS","authorizer","channel","authorize","socketId","callback","__awaiter","params","socket_id","channel_name","subscriptionCount","res","axios","post","data","uncurryThis","toObject","floor","Math","charAt","replace","stringSlice","slice","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","str","captures","namedCaptures","replacement","tailPos","length","m","symbols","undefined","match","ch","capture","n","f","thisArg","_arguments","generator","adopt","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","defaultScale","loadImage","img","Image","onload","cleanup","onerror","src","setAttribute","AwesomeQR","options","_options","Object","assign","keys","defaultOptions","forEach","k","defineProperty","enumerable","writable","components","defaultComponentOptions","dotScale","Error","scale","timing","alignment","this","canvas","size","canvasContext","getContext","qrCode","correctLevel","Number","isInteger","maskPattern","version","typeNumber","addData","text","make","_draw","clearRect","width","height","x","y","w","h","r","beginPath","moveTo","arcTo","closePath","image","blockSize","defaultRGB","g","b","i","rgb","count","naturalHeight","naturalWidth","context","drawImage","getImageData","centerX","centerY","nSize","xyOffset","fillRect","colorDark","hasProtector","oldFillStyle","fillStyle","Array","fill","map","_","_drawDot","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","nCount","moduleCount","rawSize","rawMargin","margin","ceil","rawViewportSize","whiteMargin","backgroundDimming","viewportSize","mainCanvas","mainCanvasContext","_clear","save","translate","backgroundCanvas","backgroundCanvasContext","parsedGIFBackground","gifFrames","gifBackground","gif","autoColor","colorTable","c","backgroundImage","avgRGB","_getAverageRGB","rect","colorLight","alignmentPatternCenters","getPatternPosition","dataScale","dataXyOffset","row","col","bIsDark","isDark","isBlkPosCtr","isTiming","isProtected","nLeft","nTop","strokeStyle","lineWidth","inAgnRange","cornerAlignmentCenter","protectorStyle","protectors","cornerAlignment","_drawAlignProtector","j","agnX","agnY","timingScale","timingXyOffset","cornerAlignmentScale","cornerAlignmentXyOffset","_drawAlign","alignmentScale","alignmentXyOffset","backgroundColor","logoImage","logoScale","logoMargin","logoCornerRadius","logoSize","restore","logoBackgroundColor","_prepareRoundedCornerClip","clip","oldGlobalCompositeOperation","globalCompositeOperation","gifOutput","patchCanvas","patchCanvasContext","patchData","frame","setDelay","delay","setRepeat","dims","createImageData","set","patch","putImageData","left","unscaledCanvas","unscaledCanvasContext","outCanvas","outCanvasContext","addFrame","finish","isElement","u8array","stream","toFlattenUint8Array","binary","reduce","bin","u8","String","fromCharCode","btoa","Buffer","from","toDataURL","toBuffer","obj","HTMLElement","nodeType","style","ownerDocument","CorrectLevel","M","_uint","subBlocksSchema","blocks","terminator","chunks","streamSize","readByte","pos","availableSize","push","readBytes","Uint8Array","offset","gceSchema","conditional","gce","codes","byteSize","extras","readBits","future","index","disposal","userInput","transparentColorGiven","readUnsigned","transparentColorIndex","peekBytes","imageSchema","code","descriptor","lct","exists","interlaced","sort","readArray","parent","pow","minCodeSize","peekByte","textSchema","preData","applicationSchema","application","readString","commentSchema","comment","schema","header","signature","lsd","gct","resolution","backgroundColorIndex","pixelAspectRatio","frames","loop","nextCode","_default","VERSION","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","LAZY_WHILE_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","join","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","types","require","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","func","args","call","arrayAggregator","array","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","values","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","asciiToArray","string","split","asciiWords","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","baseSortBy","comparer","current","baseTimes","baseToPairs","props","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","getValue","hasUnicode","test","hasUnicodeWord","iteratorToArray","iterator","mapToArray","overArg","transform","arg","replaceHolders","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","stringToArray","unicodeToArray","unescapeHtmlChar","lastIndex","unicodeWords","runInContext","defaults","pick","Date","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","idCounter","maskSrcKey","uid","exec","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Symbol","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","clone","lazyValue","dir","isArr","isRight","arrLength","view","getView","start","end","iteratees","iterLength","takeCount","baseWrapperValue","outer","iterIndex","type","computed","Hash","entries","clear","entry","hashClear","__data__","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","pop","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","get","mapCacheHas","mapCacheSet","SetCache","add","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","keysFunc","getAllKeysIn","getAllKeys","baseConforms","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","valuesIndex","templateSettings","constructor","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFill","toInteger","toLength","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGetTag","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInverter","baseInvoke","last","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","pattern","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","newValue","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRange","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","buffer","copy","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","byteOffset","cloneRegExp","regexp","cloneSymbol","symbol","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","order","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createBind","isBind","Ctor","createCtor","wrapper","fn","arguments","createCaseFirst","methodName","trailing","createCompounder","words","deburr","thisBinding","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createPartial","createRange","toFinite","createRelationalOperation","toNumber","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","newData","setData","setWrapToString","createRound","precision","pair","noop","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrStacked","othStacked","arrValue","othValue","compared","message","convert","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","flatten","otherFunc","isKeyable","isOwn","unmasked","stubArray","transforms","getWrapDetails","hasPath","hasFunc","input","insertWrapDetails","details","ArrayBuffer","ctorString","isMaskable","stubFalse","memoizeCapped","memoize","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","reference","updateWrapDetails","lastCalled","stamp","remaining","rand","charCodeAt","quote","subString","chunk","compact","concat","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","findIndex","findLastIndex","flattenDeep","flattenDepth","fromPairs","head","initial","intersection","mapped","intersectionBy","intersectionWith","separator","lastIndexOf","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","remove","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","chain","tap","interceptor","wrapperAt","wrapperChain","wrapperCommit","wrapperNext","toArray","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","countBy","every","filter","find","findLast","flatMap","flatMapDeep","flatMapDepth","forEachRight","groupBy","isString","invokeMap","keyBy","orderBy","partition","reduceRight","negate","sample","sampleSize","shuffle","some","sortBy","after","before","bind","bindKey","curry","curryRight","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","defer","flip","resolver","memoized","Cache","once","overArgs","funcsLength","partial","partialRight","rearg","rest","spread","throttle","unary","wrap","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","gt","gte","isBoolean","isEmpty","isEqual","isEqualWith","isError","isMatch","isMatchWith","isNaN","isNumber","isNative","isNull","isNil","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lt","lte","sign","remainder","isBinary","toSafeInteger","assignIn","assignInWith","assignWith","at","properties","propsIndex","propsLength","defaultsDeep","mergeWith","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","invert","invertBy","invoke","mapKeys","mapValues","merge","omit","omitBy","pickBy","prop","setWith","toPairs","toPairsIn","isArrLike","unset","update","updateWith","valuesIn","clamp","inRange","floating","temp","camelCase","word","toLowerCase","capitalize","upperFirst","endsWith","target","escape","escapeRegExp","kebabCase","lowerCase","lowerFirst","pad","strLength","padEnd","padStart","radix","repeat","snakeCase","limit","startCase","startsWith","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","toUpperCase","trim","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","upperCase","bindAll","methodNames","cond","conforms","defaultTo","flow","flowRight","matches","matchesProperty","method","methodOf","mixin","noConflict","nthArg","over","overEvery","overSome","propertyOf","range","rangeRight","stubObject","stubString","stubTrue","times","toPath","uniqueId","prefix","augend","addend","divide","dividend","divisor","maxBy","mean","meanBy","minBy","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","sum","sumBy","entriesIn","extend","extendWith","each","eachRight","first","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","commit","toJSON","$","lengthOfArrayLike","setArrayLength","deletePropertyOrThrow","doesNotExceedSafeInteger","INCORRECT_RESULT","unshift","properErrorOnNonWritableLength","error","FORCED","forced","item","len","argCount","to","classof","wellKnownSymbol","MATCH","it","ncycles","netsize","maxnetpos","netbiasshift","intbiasshift","intbias","gammashift","betashift","beta","betagamma","initrad","radiusbiasshift","radiusbias","initradius","radiusdec","alphabiasshift","initalpha","radbiasshift","radbias","alpharadbshift","alpharadbias","prime1","prime2","prime3","prime4","minpicturebytes","NeuQuant","pixels","samplefac","network","netindex","bias","freq","radpower","init","v","Int32Array","Float64Array","unbiasnet","altersingle","alpha","alterneigh","radius","p","a","lo","abs","hi","contest","dist","biasdist","betafreq","bestd","bestbiasd","bestpos","bestbiaspos","inxbuild","q","smallpos","smallval","previouscol","startpos","inxsearch","best","learn","lengthcount","alphadec","samplepixels","delta","rad","pix","buildColormap","getColormap","l","lookupRGB","EOF","BITS","HSIZE","masks","LZWEncoder","colorDepth","cur_accum","a_count","maxcode","g_init_bits","ClearCode","EOFCode","curPixel","n_bits","initCodeSize","accum","htab","codetab","cur_bits","free_ent","clear_flg","char_out","outs","flush_char","cl_block","cl_hash","output","hsize","compress","init_bits","fcode","ent","disp","hsize_reg","hshift","MAXCODE","nextPixel","outer_loop","encode","writeByte","writeBytes","ByteArray","page","pages","newPage","pageSize","charMap","GIFEncoder","transparent","transIndex","indexedPixels","colorTab","neuQuant","usedEntry","palSize","dispose","firstFrame","dither","globalPalette","out","cursor","rv","acc","lastLength","val","writeUTFBytes","milliseconds","setFrameRate","fps","setDispose","disposalCode","setTransparent","color","imageData","getImagePixels","analyzePixels","writeHeader","writeLSD","writePalette","writeNetscapeExt","writeGraphicCtrlExt","writeImageDesc","writePixels","setQuality","quality","setDither","setGlobalPalette","palette","getGlobalPalette","ditherPixels","indexPixels","findClosest","imgq","nPix","findClosestRGB","kernel","serpentine","kernels","FalseFloydSteinberg","FloydSteinberg","Stucki","Atkinson","ds","direction","xend","idx","r1","g1","b1","r2","g2","b2","er","eg","eb","x1","y1","d","used","minpos","dmin","dr","dg","db","srcPos","transp","writeShort","pValue","enc","_typeof","_classCallCheck","instance","Constructor","_defineProperties","configurable","_createClass","protoProps","staticProps","_extends","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","__proto__","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","Channel","event","listen","stopListening","EventFormatter","namespace","setNamespace","substr","PusherChannel","_Channel","_super","_this","eventFormatter","subscribe","subscription","unsubscribe","on","format","_this2","bind_global","formattedEvent","unbind","unbind_global","PusherPrivateChannel","_PusherChannel","eventName","channels","trigger","PusherEncryptedPrivateChannel","PusherPresenceChannel","members","member","info","SocketIoChannel","socket","events","listeners","emit","auth","unbindEvent","cb","_this3","removeListener","SocketIoPrivateChannel","_SocketIoChannel","SocketIoPresenceChannel","_SocketIoPrivateChann","user_info","NullChannel","NullPrivateChannel","_NullChannel","NullPresenceChannel","Connector","_defaultOptions","headers","authEndpoint","userAuthentication","endpoint","csrfToken","bearerToken","host","setOptions","connect","token","selector","document","querySelector","getAttribute","PusherConnector","_Connector","client","signin","leaveChannel","connection","disconnect","SocketIoConnector","io","getSocketIO","NullConnector","withoutInterceptors","registerInterceptors","_channel","connector","presenceChannel","leave","privateChannel","encryptedPrivateChannel","Vue","http","registerVueRequestInterceptor","registerAxiosRequestInterceptor","jQuery","registerjQueryAjaxSetup","Turbo","registerTurboRequestInterceptor","interceptors","request","use","config","ajax","ajaxPrefilter","originalOptions","xhr","setRequestHeader","_this4","addEventListener","detail","fetchOptions","SUBSCRIPTION_COUNT","WIDGET_UPDATED","WIDGET_REFRESH","MANUAL_LAUNCH","AUTO_LAUNCH","DEMO_REAL_LAUNCH","DEMO_LAUNCH","DEMO_REFERRAL_LAUNCH","FETCHING_AD","REFERRAL_LAUNCH","CHATBOT_MESSAGE_SENT","FREEMIUM_PREVIEW","FREEMIUM_SETUP","CHATBOT_DISCONNECT","CONVERTION_ALERT","buildStream","uint8Data","subarray","littleEndian","bytes","totalOrFunc","parser","arr","subBitsTotal","bits","startIndex","_byte","def","requireObjectCoercible","isCallable","isNullOrUndefined","getMethod","getRegExpFlags","getSubstitution","IS_PURE","REPLACE","stringIndexOf","searchValue","replaceAll","replaceValue","IS_REG_EXP","flags","replacer","searchString","functionalReplace","searchLength","advanceBy","endOfLastMatch","Positions","FreemiumMessagesFrequency","factory","modules","installedModules","__webpack_require__","moduleId","getter","t","mode","__esModule","ns","s","__extends","extendStatics","__","INVALID_BYTE","Coder","_paddingCharacter","encodedLength","_encodeByte","maxDecodedLength","decodedLength","_getPaddingLength","decode","paddingLength","op","haveBad","v0","v1","v2","v3","_decodeChar","stdCoder","URLSafeCoder","urlSafeCoder","encodeURLSafe","decodeURLSafe","INVALID_UTF16","INVALID_UTF8","n1","n2","n3","default","__webpack_exports__","AuthRequestType","ScriptReceiverFactory","lastId","called","callbackWrapper","receiver","ScriptReceivers","Defaults","PROTOCOL","wsPort","wssPort","wsPath","httpHost","httpPort","httpsPort","httpPath","stats_host","authTransport","activityTimeout","pongTimeout","unavailableTimeout","transport","channelAuthorization","cdn_http","cdn_https","dependency_suffix","dependency_loader_DependencyLoader","DependencyLoader","receivers","loading","load","runtime","createScriptRequest","getPath","callbacks","successCallback","wasSuccessful","send","getRoot","cdn","protocol","getDocument","location","useTLS","suffix","dependency_loader","DependenciesReceivers","Dependencies","urlStore","baseUrl","urls","authenticationEndpoint","authorizationEndpoint","javascriptQuickStart","triggeringClientEvents","encryptedChannelSupport","fullUrl","buildLogSuffix","urlPrefix","urlObj","url_store","BadEventName","msg","_newTarget","BadChannelName","RequestTimedOut","TransportPriorityTooLow","TransportClosed","UnsupportedFeature","UnsupportedTransport","UnsupportedStrategy","HTTPAuthError","query","authOptions","authRequestType","createXHR","headerName","open","headersProvider","dynamicHeaders","onreadystatechange","readyState","parsed","JSON","parse","responseText","UserAuthentication","ChannelAuthorization","xhr_auth","utob","b64chars","b64tab","base64_i","cb_utob","cc","u","cb_encode","ccc","padlen","ord","Timer","timer","isRunning","ensureAborted","abstract_timer","timers_extends","timers_clearTimeout","timers_clearInterval","clearInterval","OneOffTimer","PeriodicTimer","setInterval","Util","_i","boundArguments","util","extensions","stringify","safeJSONStringify","arrayIndexOf","nativeIndexOf","objectApply","mapObject","filterObject","any","collections_all","encodeParamsObject","encodeURIComponent","buildQueryString","decycleObject","objects","derez","nu","$ref","logger_Logger","Logger","globalLog","console","log","debug","warn","globalLogWarn","globalLogError","defaultLoggingFunction","core_pusher","logToConsole","logger","jsonp","callbackName","nextAuthCallbackID","script","createElement","auth_callbacks","callback_name","getElementsByTagName","documentElement","insertBefore","firstChild","jsonp_auth","ScriptRequest","errorString","charset","async","attachEvent","navigator","userAgent","errorScript","nextSibling","parentNode","removeChild","script_request","jsonp_request_JSONPRequest","JSONPRequest","jsonp_request","getAgent","sender","scheme","createJSONPRequest","jsonp_timeline_jsonp","jsonp_timeline","getGenericURL","baseScheme","hostTLS","hostNonTLS","getGenericPath","queryString","ws","getInitial","sockjs","callback_registry_CallbackRegistry","CallbackRegistry","_callbacks","prefixedEventName","names","removeCallback","removeAllCallbacks","callback_registry","dispatcher_Dispatcher","Dispatcher","failThrough","global_callbacks","unbind_all","metadata","dispatcher","transport_connection_extends","transport_connection_TransportConnection","TransportConnection","hooks","priority","initialize","transportConnectionInitializer","state","timeline","generateUniqueID","handlesActivityChecks","supportsPing","getSocket","onError","changeState","bindListeners","close","ping","onOpen","beforeOpen","onopen","buildTimelineMessage","onClose","closeEvent","reason","wasClean","unbindListeners","onMessage","onActivity","onclose","onmessage","onactivity","cid","transport_connection","transport_Transport","Transport","isSupported","environment","createConnection","transports_transport","WSTransport","isInitialized","getWebSocketAPI","createWebSocket","httpConfiguration","streamingConfiguration","HTTPFactory","createStreamingSocket","pollingConfiguration","createPollingSocket","xhrConfiguration","isXHRSupported","XHRStreamingTransport","XHRPollingTransport","Transports","xhr_streaming","xhr_polling","transports","SockJSTransport","file","SockJS","js_path","ignore_null_origin","ignoreNullOrigin","xdrConfiguration","yes","isXDRSupported","XDRStreamingTransport","XDRPollingTransport","xdr_streaming","xdr_polling","transports_transports","net_info_extends","NetInfo","isOnline","onLine","net_info_Network","assistant_to_the_transport_manager_AssistantToTheTransportManager","AssistantToTheTransportManager","manager","minPingDelay","maxPingDelay","pingDelay","openTimestamp","onClosed","reportDeath","lifespan","isAlive","assistant_to_the_transport_manager","Protocol","decodeMessage","messageEvent","messageData","pusherEventData","pusherEvent","user_id","encodeMessage","processHandshake","activity_timeout","getCloseAction","getCloseError","protocol_protocol","connection_extends","connection_Connection","Connection","send_event","activity","closed","handleCloseEvent","listener","connection_connection","handshake_Handshake","Handshake","connection_handshake","timeline_sender_TimelineSender","TimelineSender","TimelineTransport","timeline_sender","channel_extends","channel_Channel","subscribed","subscriptionPending","subscriptionCancelled","handleEvent","handleSubscriptionSucceededEvent","handleSubscriptionCountEvent","subscription_count","channel_data","cancelSubscription","reinstateSubscription","channels_channel","private_channel_extends","PrivateChannel","channelAuthorizer","channelName","private_channel","members_Members","Members","reset","setMyID","myID","onSubscription","subscriptionData","presence","hash","me","addMember","memberData","removeMember","presence_channel_extends","__generator","body","label","sent","trys","ops","verb","presence_channel_PresenceChannel","PresenceChannel","authData","channelData","user","signinDonePromise","user_data","handleInternalEvent","addedMember","removedMember","presence_channel","utf8","base64","encrypted_channel_extends","encrypted_channel_EncryptedChannel","EncryptedChannel","nacl","sharedSecret","handleEncryptedEvent","ciphertext","nonce","cipherText","secretbox","overheadLength","nonceLength","getDataToEmit","raw","encrypted_channel","connection_manager_extends","connection_manager_ConnectionManager","ConnectionManager","usingTLS","errorCallbacks","buildErrorCallbacks","connectionCallbacks","buildConnectionCallbacks","handshakeCallbacks","buildHandshakeCallbacks","Network","getNetwork","netinfo","retryIn","sendActivityCheck","updateStrategy","runner","strategy","updateState","startConnecting","setUnavailableTimer","disconnectInternally","isUsingTLS","handshake","handshakeError","abortConnecting","abort","clearRetryTimer","clearUnavailableTimer","abandonConnection","getStrategy","retryTimer","unavailableTimer","stopActivityCheck","activityTimer","pong_timed_out","resetActivityCheck","shouldRetry","connected","setConnection","withErrorEmitted","tls_only","refused","backoff","retry","newState","previousState","newStateDescription","connection_manager","channels_Channels","Channels","createChannel","all","createEncryptedChannel","errMsg","createPrivateChannel","createPresenceChannel","Factory","createChannels","createConnectionManager","createTimelineSender","createHandshake","createAssistantToTheTransportManager","transport_manager_TransportManager","TransportManager","livesLeft","lives","getAssistant","transport_manager","sequential_strategy_SequentialStrategy","SequentialStrategy","strategies","failFast","timeout","timeoutLimit","minPriority","tryNextStrategy","tryStrategy","forceMinPriority","sequential_strategy","best_connected_ever_strategy_BestConnectedEverStrategy","BestConnectedEverStrategy","runners","allRunnersFailed","best_connected_ever_strategy","callbackBuilder","rs","abortRunner","aborted","cached_strategy_CachedStrategy","CachedStrategy","ttl","fetchTransportCache","timestamp","cached","latency","startTimestamp","flushTransportCache","storeTransportCache","cached_strategy","getTransportCacheKey","storage","getLocalStorage","serializedCache","delayed_strategy_DelayedStrategy","DelayedStrategy","delayed_strategy","IfStrategy","trueBranch","falseBranch","branch","if_strategy","FirstConnectedStrategy","first_connected_strategy","testSupportsStrategy","State","getDefaultStrategy","baseOptions","defineTransport","definedTransports","defineTransportStrategy","wsStrategy","ws_options","wsHost","wss_options","sockjs_options","timeouts","ws_manager","streaming_manager","ws_transport","wss_transport","sockjs_transport","xhr_streaming_transport","xdr_streaming_transport","xhr_polling_transport","xdr_polling_transport","ws_loop","wss_loop","sockjs_loop","streaming_loop","polling_loop","http_loop","http_fallback_loop","default_strategy","transport_connection_initializer","http_xdomain_request_hooks","getRequest","xdr","XDomainRequest","ontimeout","onprogress","onChunk","abortRequest","http_xdomain_request","http_request_extends","MAX_BUFFER_LENGTH","http_request_HTTPRequest","HTTPRequest","payload","unloader","addUnloadListener","removeUnloadListener","advanceBuffer","isBufferTooLong","unreadData","endOfLinePosition","http_request","autoIncrement","http_socket_HTTPSocket","HTTPSocket","session","randomNumber","randomString","getLocation","CONNECTING","openStream","sendRaw","sendHeartbeat","OPEN","createSocketRequest","getUniqueURL","getSendURL","reconnect","closeStream","CLOSED","onEvent","onHeartbeat","hostname","base","replaceHost","getReceiveURL","onFinished","parts","urlParts","randomInt","http_socket","http_streaming_socket_hooks","http_streaming_socket","http_polling_socket_hooks","http_polling_socket","http_xhr_request_hooks","getXHRAPI","http_xhr_request","HTTP","createSocket","createRequest","http_http","createXDR","TimelineLevel","web_http_http","Runtime","XMLHttpRequest","WebSocket","MozWebSocket","setup","PusherClass","initializeOnDocumentBody","onDocumentBody","ready","getProtocol","getAuthorizers","localStorage","createXMLHttpRequest","createMicrosoftXHR","ActiveXObject","withCredentials","documentProtocol","removeEventListener","detachEvent","crypto","getRandomValues","Uint32Array","timeline_level","timeline_Timeline","Timeline","uniqueID","level","shift","ERROR","INFO","DEBUG","sendfn","bundle","lib","features","timeline_timeline","transport_strategy_TransportStrategy","TransportStrategy","failAttempt","onInitialized","serializedTransport","transport_strategy","strategy_builder_Transports","strategy_builder_defineTransport","transportClass","enabled","enabledTransports","disabledTransports","strategy_builder_UnsupportedStrategy","deferred","composeChannelQuery","paramsProvider","dynamicParams","UserAuthenticator","user_authenticator","channel_authorizer_composeChannelQuery","ChannelAuthorizer","channel_authorizer","ChannelAuthorizerProxy","channelAuthorizerGenerator","deprecatedAuthorizerOptions","__assign","getConfig","opts","statsHost","enableStats","getEnableStatsConfig","getHttpHost","shouldUseTLS","getWebsocketHost","userAuthenticator","buildUserAuthenticator","buildChannelAuthorizer","timelineParams","getWebsocketHostFromCluster","disableStats","buildChannelAuth","customHandler","watchlist_extends","watchlist_WatchlistFacade","WatchlistFacade","bindWatchlistInternalEvent","watchlistEvent","watchlist","flatPromise","promise","rej","flat_promise","user_extends","user_UserFacade","UserFacade","signin_requested","serverToUserChannel","_signinDoneResolve","_onAuthorize","err","_cleanup","_signin","_newSigninPromiseIfNeeded","_onSigninSuccess","_subscribeChannels","ensure_subscribed","setDone","pusher_Pusher","app_key","checkAppKey","global_emitter","sessionID","getClientFeatures","timelineSender","subscribeAll","internal","instances","isReady","allChannels","timelineSenderTimer","event_name","defaultWidget","obsDockSlug","platform","boxSize","referralPromotion","advertising","AdvertisingMode","AUTO","frequency","AdvertisingPosition","leaderboard","LeaderboardPosition","TOP","adManualEnabled","ignoreCategories","botEnabled","extensionEnabled","nightbot","twitch","moderator","youtube","trovo","streamer","vkplay","relogin","bsRequired","allowAdultContent","sspTextFrequency","payloadToCreativeAdapter","dto","uuid","impressionSlug","impression_slug","viewersCount","viewers_count","qr","qr_code","link","qr_link","companion","cta","companion_cta","heading","companion_heading","companion_text","clicks","pixel_clicks","impressions","pixel_impressions","adSet","ad_set","attachments","payloadDemoToCreativeAdapter","format_code","campaignType","campaign","type_code","inspections","advertiser","legal_name","tin","make_screenshots","SKIP_TOKEN_CLEAR_INTERVAL","Ssp","widget","lastCreativeId","interval","fetchSspCreativesData","sspCreatives","creativesData","creative","isCpcRequest","AdFormat","YANDEX_PF","sspCreative","YANDEX_FS","video","allow_adult_content","isDebug","skip_token","fetchSspMediaCreative","vast_path","YANDEX_TEXT","unit","fetchSspTextCreative","chatbot_text","warning","prepareSspCreativeMedia","ssp","metacount","meta_count","rtbcount","rtb_count","transformAdvertiserText","prepareSspCreativeText","resolveAllCreatives","creatives","sspCreativesData","resolvedCreatives","findSspCreative","resolvedSspCreative","isSspFormat","prepareSspCreatives","Preparer","prepareCreatives","items","ad","Analytic","ga","price","quantity","creativesLoop","addAd","prepareDemoCreatives","addDemo","preparePromoCreatives","hasOwn","isPrototypeOf","regExpFlags","RegExpPrototype","R","RequestTypes","deinterlace","newPixels","rows","cpRow","toRow","fromRow","fromPixels","offsets","steps","pass","lzw","pixelCount","MAX_STACK_SIZE","nullCode","npix","available","code_mask","code_size","end_of_information","in_code","old_code","data_size","dstPixels","pixelStack","datum","pi","bi","parseGIF","byteData","generatePatch","totalPixels","Uint8ClampedArray","colorIndex","transparentIndex","decompressFrame","buildImagePatch","resultImage","disposalType","decompressFrames","parsedGif","buildImagePatches","anObject","that","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","checkQRVersion","sText","nCorrectLevel","_getUTF8Length","nLimit","QRErrorCorrectLevel","L","QRCodeLimitLength","Q","H","_getTypeNumber","nType","replacedText","encodeURI","QR8bitByte","QRMode","MODE_8BIT_BYTE","parsedData","byteArrays","byteArray","put","QRCodeModel","errorCorrectLevel","dataList","dataCache","makeImpl","getBestMaskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","QRMaskPattern","minLostPoint","lostPoint","QRUtil","getLostPoint","getBCHTypeNumber","mod","getBCHTypeInfo","inc","bitIndex","byteIndex","dark","mask","getMask","rsBlocks","QRRSBlock","getRSBlocks","QRBitBuffer","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","PAD0","PAD1","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","rsPoly","getErrorCorrectPolynomial","rawPoly","QRPolynomial","modPoly","modIndex","totalCodeCount","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","getBCHDigit","G15","G15_MASK","G18","digit","PATTERN_POSITION_TABLE","errorCorrectLength","QRMath","gexp","getModuleCount","sameCount","darkCount","ratio","LOG_TABLE","EXP_TABLE","_constructor","num","glog","rsBlock","getRsBlockTable","list","RS_BLOCK_TABLE","bufIndex","bit","render","_setup$creativesManag","_vm","_self","_setup","_setupProxy","creativesManager","showWrapper","Wrapper","attrs","isUpdating","component","onTimerStart","onUpdateCurrentTime","onTimerEnd","staticRenderFns","staticClass","class","isAtTop","isVideo","ref","useInterval","oldTime","startInterval","currentTime","deltaTime","_defineComponent","__name","emits","__props","_ref","videoElement","videoPath","unitPath","onMounted","__sfc","usePixels","getRandomString","formatPixels","callPixel","oldPixel","getElementById","URL","href","appendChild","callImpressionPixels","pixel","wrapRef","pixelImpressions","isLeftTop","isRightBottom","RIGHT_BOTTOM_CORNER","_vm$creative","_vm$creative$qr","_vm$creative2","_vm$creative2$qr","_vm$creative3","_vm$creative3$qr","blacked","isCompleted","AdvertState","Loader","QrCode","isIntro","_v","disclaimerText","eridText","useTime","secondsLeft","minutes","seconds","useAdvertState","streamerName","displayname","vm","$route","$store","getters","mainText","i18n","tc","introTimer","playingTimer","one","currentCreativeIndex","of","CHATBOT_TEXT","timerText","useRootLocale","attachment","FULLSCREEN","PIP","CUSTOM","erid","legal_compliance","media","advertiserName","advertiserTin","percent","isTopRight","ctaText","VueQr","bindElement","staticStyle","imgUrl","toBoolean","readAsArrayBuffer","responseType","reader","FileReader","onloadend","response","required","qid","bgSrc","background","logoSrc","gifBgSrc","binarize","binarizeThreshold","watch","$props","deep","handler","main","mounted","methods","gifImg","logoImg","bgImg","draw","dataUri","innerWidth","isPip","isLeaderboard","LEADERBOARD","countCreatives","currentIdx","mediaCreatives","player","isXml","endTime","videojs","vastAd","vastClient","adTagUrl","autoResize","playAdAlways","adCancelTimeout","isPlaying","paused","ended","play","adsEnabled","plugins","enable","disable","onBeforeUnmount","contentWindow","postMessage","username","nickname","signedUp","signed_up","lang","language","scriptCode","script_code","adId","Leaderboard","Fullscreen","Pip","Custom","YandexFS","YandexText","ChatbotText","ADMNGR","GoogleAdManager","onPlayEnd","parseFont","createCanvas","ImageData","getSetup","Api","showMessage","ErrorMessage","Chatbot","sendMessage","trySendMessage","getMessageData","throwOnStatusFalse","critical","WIDGET_MESSAGE_SEND","bid_price","product_link","product_url","sendFreemiumMessage","WIDGET_FREEMIUM_MESSAGE_SEND","Chat","freemium","DISABLED","messagesIntervalId","freemiumMessages","useRootLocaleObj","lastFreemiumMessages","chatbot","chat","chat_message_frequency","chatIsNotActive","goal","obsstudio","getStatus","streaming","getMessage","streamerLocale","locale","randomgIndex","getRandom","Goal","progress","currentCard","cardIntervalId","CARD_CHANGE_INTERVAL","updateProgress","loopCards","isNotPreview","preview","isActive","INTERVAL","PREVIEW_DURATION","nextCard","hasNoSupporters","Poll","results","updateResults","initTimer","Preview","show","loopStack","emojis","getRandomEmoji","defaultTopSupporters","Supporters","LEFT_BOTTOM_CORNER","positionAlign","isAdding","isFirstRemoving","TRANSITION_MS","MAX_IN_STACK","ADD_INTERVALS","VISIBLE_MS","updateLists","addToRecent","supporter","removeFromRecent","recentSupporters","getRandomInterval","inteval","emoji","anonymous","createdAt","Freemium","poll","POLLING_INTERVAL","pollingIntervalId","freemium_active","WIDGET_FREEMIUM_START","initPolling","support","fetctData","streamerId","getWidget","ms","REQUEST_LOOP_TICK","REQUEST_INTERVAL","CREATIVES_LOOP_TICK","BRAND_AWARENESS_COOLDOWN","REFERRAL_PROMO_COOLDOWN","PRIMAL_TIMER_TIMEOUT","TIME_BEFORE_PRELOAD","BS_CHECK_BEFORE_REQUEST","CHATBOT_TEXT_DELAY","SCREENSHOT_TIMEOUT","SCREENSHOT_DELAY","CONVERSION_ALERT_DURATION_MAX","YandexTextDelay","hasErrorMessage","preloadVideo","errorTimeout","onloadeddata","preloadImage","preloadUnit","lowerCasePath","tryPreloadImage","tryPreloadVideo","tryPreloadUnit","ConvertionAlert","isShowing","currentAlert","alertTimeout","showAlert","alert","animation","hideAlert","clearAlertTimeout","CreativesLoop","queue","demo","isCreativePreloading","isPreloading","isCreativePlaying","isCreativeIntro","check","isPaused","startDemo","isManual","getTime","isTimeToPreload","whenDisplay","startAd","_whenDisplay","lastAd","preloaded","preload","displayDemo","displayAd","CreativeTimer","stop","_limit","sumTime","nowTime","preloadCreatives","creativeSlug","getCreativeDuration","CreativesManager","playCreatives","waitingInterval","playIntro","totalTime","nextCreative","affiliation","revenue","increaseCreativeIndex","isSspMediaFormat","setCreative","switchCreative","getTextCreativeDelay","ONE","TWO","THREE","screenshot","makeScreenshot","startImageTimer","hasUnitDuration","hasVideoDuration","isImage","dataLayer","WIDGET_UNDEFINED_CREATIVE","listenChannel","listenPrivateChannel","pusherEvents","private","payloadToWidgetAdapter","reload","requestLoop","resetNextCall","BRAND_AWARENESS","streamInfo","preparer","checkVersion","REFERRAL_PROMO","conversionAlert","RequestLoop","pause","isSafe","requests","BRAND_SAFETY","nextCall","cooldown","api","checkForBS","WIDGET_BRAND_SAFETY","innerHeight","fetchBrandAwareness","fetchReferralPromo","widgetResolutionIsCorrect","isCreativesQueueFullfilled","_coolDown","coolDown","callRequest","catchRequestError","isRequiremenetsNotMet","isNoActiveCampaigns","isBlocked","ScreenshotClient","Client","super","common","ScreenshotApi","apiUrl","Screenshot","getScreenshotData","WIDGET_MAKE_SCREENSHOT","widgetData","Platform","YOUTUBE","impression","TWITCH","TROVO","VK_PLAY","Widget","isLoaded","MANUAL","deleted","deleted_request","Beamer","destroy","setIsDebug","activateWidget","fetchWidget","isStreamerDeactivated","searchParams","origin","fetch","configureRollbar","$rollbar","configure","domain","partSchema","conditionFunc","continueFunc","lastStreamPos","newParent","weights","styles","variants","stretches","units","weightRe","styleRe","variantRe","stretchRe","sizeFamilyRe","defaultHeight","sizeFamily","font","weight","stretch","variant","family"],"mappings":"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ACtB,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,KACV,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,G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AAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAG9qJC,EAAiBA,IACrBD,EAAOtmG,KAAKD,MAAMC,KAAK4oB,SAAW09E,EAAOzlG,S,gBCMlD,MAAM2lG,EAAkD,CACtDhpG,IAAK,GACLC,SAAU,IAEN,MAAOgpG,EAeX5zE,YAAaixE,GAbb,KAAAlkG,KAAmC+4F,iBAAI,MACvC,KAAA1nE,MAAyC0nE,iBAAI,IAC7C,KAAAj7F,OAAoCi7F,iBAAI,IACxC,KAAAn7F,IAAsCm7F,iBAAI6N,GAC1C,KAAAlqG,SAAkCq8F,iBAAIp8F,OAAiBmqG,oBACvD,KAAAC,cAAkC,SAClC,KAAAC,SAAyBjO,kBAAI,GAC7B,KAAAkO,gBAAgClO,kBAAI,GACnB,KAAAmO,cAAgB,IAChB,KAAAC,aAAe,EACf,KAAAC,cAAgB,CAAC,IAAU,KAC3B,KAAAC,WAAa,IAG5B/iG,KAAK4/F,SAAWA,EAGlBllB,MAAOh/E,GAIL,OAHAsE,KAAKtE,KAAKxD,MAAQwD,EAClBsE,KAAK5H,SAASF,MAAQwD,EAAKtD,SAEnB4H,KAAK5H,SAASF,OACtB,KAAKG,OAAiBmqG,mBACtB,KAAKnqG,OAAiBm+F,oBAEpB,YADAx2F,KAAKyiG,cAAgB,UAEvB,KAAKpqG,OAAiBC,gBACtB,KAAKD,OAAiBQ,iBACpBmH,KAAKyiG,cAAgB,OAIzBO,YAAatnG,GACXsE,KAAKxG,OAAOtB,MAAQ,IAAI8H,KAAKxG,OAAOtB,SAAUwD,EAAKlC,QACnDwG,KAAK1G,IAAIpB,MAAQ,CACfoB,IAAKoC,EAAKpC,IACVC,SAAUmC,EAAKnC,UAIX0pG,YAAaC,GACnBljG,KAAK0iG,SAASxqG,OAAQ,EACK,WAAvB8H,KAAKyiG,eACPziG,KAAK+sB,MAAM70B,MAAMmU,KAAK62F,GAEG,QAAvBljG,KAAKyiG,eACPziG,KAAK+sB,MAAM70B,MAAM2gD,QAAQqqD,GAG3B1/E,WAAW,IAAOxjB,KAAK0iG,SAASxqG,OAAQ,EAAQ8H,KAAK4iG,eAEjD5iG,KAAK+sB,MAAM70B,MAAMyE,QAAUqD,KAAK6iG,aAAe,GACjDr/E,WAAW,IAAOxjB,KAAK2iG,gBAAgBzqG,OAAQ,EAAO8H,KAAK4iG,eAC3Dp/E,WAAW,IAAMxjB,KAAKmjG,mBAAyC,EAArBnjG,KAAK4iG,gBAG/Cp/E,WAAW,IAAMxjB,KAAKmjG,mBAAoBnjG,KAAK+iG,YAI3CI,mBACqB,WAAvBnjG,KAAKyiG,eACPziG,KAAK+sB,MAAM70B,MAAM+jF,QAEQ,QAAvBj8E,KAAKyiG,eACPziG,KAAK+sB,MAAM70B,MAAMoxB,MAEnBtpB,KAAK2iG,gBAAgBzqG,OAAQ,EAG/BiqG,YACE,MAAMiB,EAAmBpjG,KAAK4/F,SAAS2B,QAAQC,SAAStpG,MAAQiB,OAAYH,WAAWQ,OAASwG,KAAKxG,OAAOtB,MAE5G,IAAKkrG,IAAqBA,EAAiBzmG,OACzC,OAGF,MAAM0mG,EAAoBA,IAAMrjG,KAAK8iG,cAAchnG,KAAKD,MAAMC,KAAK4oB,SAAW1kB,KAAK8iG,cAAcnmG,SAE3F2mG,EAAUxnC,YAAY,KAC1BxxB,sBAAS,KACP,IAAK84D,IAAqBA,EAAiBzmG,OAEzC,YADAg/D,cAAc2nC,GAIhB,MAAMJ,EAAYE,EAAiBnnB,QAE9BinB,EAKLljG,KAAKijG,YAAY,CACfM,MAAOlB,IACP/E,SAAU4F,EAAUjqG,KACpBuqG,UAAW37C,QAAQq7C,EAAUjqG,MAA2B,KAAnBiqG,EAAUjqG,MAC/CwqG,UAAoB,OAATP,QAAS,IAATA,OAAS,EAATA,EAAWhqG,YARtByiE,cAAc2nC,IAUfD,IAnBH/4D,IAoBC,MCrGD,MAAOo5D,EAaX/0E,YAAag3D,GAXb,KAAA6b,SAAyB/M,kBAAI,GAE7B,KAAA8M,QAAU,IAAIU,EAAQjiG,MACtB,KAAAsgG,KAAO,IAAIS,EAAK/gG,MAChB,KAAA2jG,KAAO,IAAI9B,EAAK7hG,MAChB,KAAAhH,WAAa,IAAIupG,EAAWviG,MAGnB,KAAA4jG,iBAAmB,IAC5B,KAAAC,kBAAyC,KAGvC7jG,KAAK2lF,OAASA,EACd3lF,KAAKmgG,KAAO,IAAIR,EAAK3/F,MAGjB47C,O,4DACJ,IAGE,GAFA57C,KAAKwhG,SAAStpG,OAAuC,QAA/BqL,EAAAvD,KAAK2lF,OAAOjqF,KAAKxD,MAAM+qF,gBAAQ,IAAA1/E,OAAA,EAAAA,EAAEugG,mBAAmB,GAErE9jG,KAAKwhG,SAAStpG,MACjB,OAGF,MAAM,KAAEwD,EAAI,OAAEvD,SAAiBwmG,EAAS3+F,KAAK2lF,OAAOjqF,KAAKxD,MAAMkC,MAE/D,IAAKjC,EAEH,YADAmlE,OAAO8hC,SAASN,EAAaiF,uBAAuB,GAItD/jG,KAAK8nB,MAAMpsB,GAEb,MAAO2kF,GACL/iB,OAAO8hC,SAASN,EAAaiF,uBAAuB,OAIxDj8E,MAAOpsB,GACLsE,KAAK06E,MAAMh/E,GACXsE,KAAKsgG,KAAKe,YACVrhG,KAAK2jG,KAAK3B,YACVhiG,KAAKgkG,cACLhkG,KAAKmgG,KAAKvkD,OAGJ8+B,MAAOh/E,GACbsE,KAAKsgG,KAAK5lB,MAAMh/E,EAAK4kG,MACrBtgG,KAAK2jG,KAAKjpB,MAAMh/E,EAAKioG,MACrB3jG,KAAKhH,WAAW0hF,MAAMh/E,EAAKuoG,SAC3BjkG,KAAKmgG,KAAKzlB,MAAMh/E,GAGJsoG,c,sDACRhkG,KAAK6jG,mBACPloC,cAAc37D,KAAK6jG,yBAGf7jG,KAAKkkG,YAEXlkG,KAAK6jG,kBAAoB/nC,YAAY,IAAW5gE,eAAA,sCACxC8E,KAAKkkG,eACVlkG,KAAK4jG,qBAGIM,Y,gEACZ,MAAMC,EAA4C,QAA/B5gG,EAAAvD,KAAK2lF,OAAOjqF,KAAKxD,MAAM+qF,gBAAQ,IAAA1/E,OAAA,EAAAA,EAAEmkE,QAEpD,IAAKy8B,EACH,OAGF,MAAMzoG,QAAa0oG,uBACjBD,EACAnkG,KAAKsgG,KAAK5kG,KAAKxD,MAA4B,QAApBsL,EAAAxD,KAAKsgG,KAAK5kG,KAAKxD,aAAK,IAAAsL,OAAA,EAAAA,EAAE9L,GAAK,KAClDsI,KAAK2jG,KAAKjoG,KAAKxD,MAA4B,QAApBuL,EAAAzD,KAAK2jG,KAAKjoG,KAAKxD,aAAK,IAAAuL,OAAA,EAAAA,EAAE/L,GAAK,MAEpDsI,KAAK0wC,OAAOh1C,GACZsE,KAAKhH,WAAWmpG,eAGVzxD,OAAQh1C,GACdsE,KAAKsgG,KAAKc,eAAe1lG,EAAKtC,cAC9B4G,KAAK2jG,KAAK5B,cAAcrmG,EAAKrC,aAC7B2G,KAAKhH,WAAWgqG,YAAYtnG,EAAK1C,aCtGrC,MAAMqrG,EAAK,IACEC,EAAoBD,EACpBE,EAAwB,GAALF,EAAU,GAC7BG,EAA2B,EAALH,EACtBI,EAA2BF,EAAmB,GAC9CG,EAA+B,GAALL,EAAU,GAAK,EACzCM,EAA4B,GAALN,EAAU,GACjCO,EAA2B,GAALP,EACtBQ,EAA+B,GAALR,EAAU,EACpCS,EAA0B,GAALT,EAAU,EAC/BU,EAA0B,GAALV,EAAU,GAC/BW,EAAwB,EAALX,EACnBY,EAAqC,GAALZ,EAEtC,IAAKa,ECZZ,SAASC,EAAiBjtG,GACxB,MAAwB,kBAAVA,GACF,OAAVA,GACA,YAAaA,GACY,kBAAlBA,EAAMopC,SDQjB,SAAY4jE,GACVA,IAAA,OAAW,GAALb,EAAU,GAAC,MACjBa,IAAA,OAAW,GAALb,EAAU,GAAC,MACjBa,IAAA,SAAa,GAALb,EAAU,KAAG,SAHvB,CAAYa,MAAe,KCLpB,MAAME,EAAgBn1E,GACpB,IAAIxyB,QAAQ,CAACD,EAASE,KAE3B,GAAIuyB,EAAK3B,SAAS,QAEhB,YADA9wB,IAIF,MAAM+oF,EAAQh6B,SAAS+R,cAAc,SAC/B+mC,EAAe7hF,WAAW,KAC9B9lB,EAAO,IAAIkC,MAAM,SAASqwB,qBACzB,KAEHs2D,EAAM+e,aAAe,WACnBliF,aAAaiiF,GACb9e,EAAMzgD,SACNtoC,KAEF+oF,EAAM3nF,aAAa,MAAOqxB,KAIxBs1E,EAAgBt1E,GACb,IAAIxyB,QAAQ,CAACD,EAASE,KAC3B,MAAMkE,EAAQ,IAAIrD,MACZ8mG,EAAe7hF,WAAW,KAC9B9lB,EAAO,IAAIkC,MAAM,SAASqwB,qBACzB,KAEHruB,EAAMpD,OAAS,WACb4kB,aAAaiiF,GACbzjG,EAAMkkC,SACNtoC,KAEFoE,EAAMhD,aAAa,MAAOqxB,KAIxBu1E,EAAqBv1E,GAA+B/0B,oBAAA,6BACxD,MAAMuqG,EAAgBx1E,EAAKkhB,cAC3B,GAAI,gBAAgBtxB,KAAK4lF,GACvB,aAAaL,EAAan1E,GAEvB,GAAI,4BAA4BpQ,KAAK4lF,GACxC,aAAaF,EAAat1E,GAG1B,MAAM,IAAIrwB,MAAM,4BAIP8lG,EAAyBrd,GAAkDntF,oBAAA,6BACtF,GAAImtF,EAAGvD,YAAYljF,MACjB,UACQ2jG,EAAald,EAAGvD,YAAYljF,MAAMquB,MAE1C,MAAOowD,GACL,MAAM,IAAIzgF,MAAMulG,EAAgB9kB,GAAOA,EAAI/+C,QAAU,2BAGzD,OAAO,QAGIqkE,EAAyBtd,GAAkDntF,oBAAA,6BACtF,GAAImtF,EAAGvD,YAAYyB,MACjB,UACQ6e,EAAa/c,EAAGvD,YAAYyB,MAAMt2D,MAE1C,MAAOowD,GACL,MAAM,IAAIzgF,MAAMulG,EAAgB9kB,GAAOA,EAAI/+C,QAAU,+BAK9CskE,EAAwBvd,GAAkDntF,oBAAA,6BACrF,GAAImtF,EAAGvD,YAAYgC,KACjB,UACQ0e,EAAYnd,EAAGvD,YAAYgC,KAAK72D,MAExC,MAAOowD,GACL,MAAM,IAAIzgF,MAAMulG,EAAgB9kB,GAAOA,EAAI/+C,QAAU,8BCnFrD,MAAOukE,EAOXl3E,YAAag3D,GAJb,KAAAmgB,UAAYrR,kBAAI,GAChB,KAAAsR,aAAetR,iBAAmC,MAClD,KAAAuR,aAAevR,iBAA2B,MAGxCz0F,KAAK2lF,OAASA,EAGVsgB,UAAWC,G,sDACXlmG,KAAK2lF,OAAOgO,iBAAiBC,YAAY17F,OAAS8H,KAAK8lG,UAAU5tG,cAE/DktG,EAAac,EAAMC,UAAUl2E,MAEnCjwB,KAAK+lG,aAAa7tG,MAAQguG,EAC1BlmG,KAAK8lG,UAAU5tG,OAAQ,EAEvB8H,KAAKgmG,aAAa9tG,MAAQsrB,WAAW,KACnCxjB,KAAKomG,aACJnB,OAGLmB,YACEpmG,KAAK+lG,aAAa7tG,MAAQ,KAC1B8H,KAAK8lG,UAAU5tG,OAAQ,EAGzBmuG,oBACMrmG,KAAKgmG,aAAa9tG,QACpBkrB,aAAapjB,KAAKgmG,aAAa9tG,OAC/B8H,KAAKgmG,aAAa9tG,MAAQ,OC/B1B,MAAOouG,EAKX33E,YAAag3D,GAHb,KAAA4gB,MAA2D,GAC3D,KAAAC,KAA6B,GAG3BxmG,KAAK2lF,OAASA,EAGhB,eACE,MAAM8gB,EAAuBzmG,KAAK2lF,OAAOgO,iBAAiB+S,aAAaxuG,MACjEyuG,EAAoB3mG,KAAK2lF,OAAOgO,iBAAiB+I,UAAUxkG,MAC3D0uG,EAAkB5mG,KAAK2lF,OAAOgO,iBAAiByD,QAAQl/F,MAC7D,OAAOyuG,GAAqBC,GAAmBH,EAGjD7qD,OACEkgB,YAAY,IAAW5gE,eAAA,sCACf8E,KAAK6mG,WACVrC,GAGCqC,Q,sDACJ,IAAI7mG,KAAK8mG,SACT,GAAI9mG,KAAKwmG,KAAK7pG,aACNqD,KAAK+mG,iBAER,GAAI/mG,KAAKumG,MAAM5pG,SAAWqD,KAAK2lF,OAAOqhB,SAAU,CACnD,MAAM1jF,GAAM,IAAInC,MAAO8lF,UACjBC,EAAkBlnG,KAAKumG,MAAM,GAAGY,YAAc7jF,EAAMshF,EAEtDsC,UACIlnG,KAAKonG,eAKjBze,MAAO/D,EAAuCyiB,GAC5C,GAAIrnG,KAAK2lF,OAAOqhB,SACdhnG,KAAKumG,MAAQ,CAAC,CACZY,aAAa,IAAIhmF,MAAO8lF,UACxBriB,cAGC,CACH,MAAM0iB,EAAStnG,KAAKumG,MAAMvmG,KAAKumG,MAAM5pG,OAAS,GACxCwqG,EAAcG,EAASA,EAAOH,YAAc5C,GAAmB,IAAIpjF,MAAO8lF,UAEhFjnG,KAAKumG,MAAMl6F,KAAK,CACd86F,YAAaE,GAAgBF,EAC7BviB,WAKNiE,QAASjE,GACP5kF,KAAKwmG,KAAO5hB,EAGRmiB,Y,sDACJ,MAAMniB,EAAQ5kF,KAAKwmG,KACnBxmG,KAAKwmG,KAAO,GACZ,MAAM,UAAEe,SAAoBvnG,KAAK2lF,OAAOgO,iBAAiB6T,QAAuB5iB,SAC1E5kF,KAAK2lF,OAAOgO,iBAAiB8T,YAAYF,MAG3CH,U,sDACJ,MAAM,MAAExiB,EAAK,YAAEuiB,GAAgBnnG,KAAKumG,MAAMtqB,SACpC,UAAEsrB,SAAoBvnG,KAAK2lF,OAAOgO,iBAAiB6T,QAAmB5iB,SACtE5kF,KAAK2lF,OAAOgO,iBAAiB+T,UAAUH,EAAWJ,OC1EtD,MAAOQ,EAAbh5E,cACE,KAAAk3D,SAAkD,KAClD,KAAAvnE,QAAUm2E,iBAAI,GACd,KAAAx8F,MAAQw8F,iBAAI,GAEZmT,OACM5nG,KAAK6lF,UAAUlqB,cAAc37D,KAAK6lF,UAGxCxb,QAAe,IAARr/B,EAAIpO,UAAAjgC,OAAA,QAAAG,IAAA8/B,UAAA,GAAAA,UAAA,GAAG,EACZ58B,KAAK4nG,OACL5nG,KAAK/H,MAAMC,MAAQ8yC,EACnBhrC,KAAKse,QAAQpmB,MAAQ,EAGvB2kG,KAAMgL,GACJ,OAAO,IAAIpqG,QAAQD,IACjB,MAAM40C,EAAQy1D,GAAU7nG,KAAK/H,MAAMC,MAC7BsR,EAAQ,IAAO,GACrB,IAAIs+F,EAAU,EACVnT,GAAU,IAAIxzE,MAAO8lF,UAEzBjnG,KAAK6lF,SAAW/pB,YAAY,KAC1B,MAAMisC,GAAU,IAAI5mF,MAAO8lF,UACrBnS,EAAYiT,EAAUpT,EAC5BmT,GAAWhT,EACXH,EAAUoT,EACV/nG,KAAKse,QAAQpmB,OAAS48F,EAElBgT,GAAW11D,IACbpyC,KAAK4nG,OACLpqG,MAEDgM,M,gBCxBF,MAAMw+F,EACXpjB,GAGG1pF,oBAAA,6BACH,MAAMqsG,EAAsB,GAE5B,IAAK,MAAMlf,KAAMzD,EAAO,CACtB,MAAM,MAAE2B,EAAK,MAAE3kF,EAAK,KAAEklF,EAAI,IAAEr/C,GAAQ4gD,EAAGvD,YAEvC,GAAIkD,eAAYK,EAAGzD,MAAMr7B,SAAW8+B,EAAGzD,MAAMr7B,SAAW48B,OAASwS,aAC/D4O,EAAUl7F,KAAKg8E,OADjB,CAKA,IAAK9B,IAAU3kF,IAAUklF,IAASr/C,EAEhC,OADA61B,OAAO2pB,QAAQ,+BAA+B,EAAO,CAAEghB,aAAc5f,EAAGjuF,OACjE,CAAEmtG,aAGX,UACQ7B,EAAgBrd,SAChBsd,EAAgBtd,SAChBud,EAAevd,GAErBkf,EAAUl7F,KAAKg8E,GAEjB,MAAOhI,GACL/iB,OAAO2pB,QAAQ,mDAAmD,EAAO,CAAE5G,MAAK4nB,aAAc5f,EAAGjuF,SAIrG,MAAO,CAAEmtG,gB,gBCzCJ,MAAMW,GAAuBvgB,IAClC,IAAIjvF,EAAW,EAqBf,OAnBAivF,EAAUvoF,QAAQ6mF,IAChB,MAAM,YAAEnB,GAAgBmB,EAEpBnB,EAAYyB,MACd7tF,GAAYoD,KAAKD,MAAMipF,EAAYyB,MAAMz3C,WAAWp2C,UAAY,GAEzDosF,EAAYgC,KACfhC,EAAYgC,KAAKh4C,WAAWp2C,WAC9BA,GAAYoD,KAAKD,MAAMipF,EAAYgC,KAAKh4C,WAAWp2C,UAAY,IAM1DosF,EAAYr9C,MACnB/uC,GAAY,MAIE,IAAXA,GCxBI01B,GAAQ5kB,GACZ,IAAI/L,QAAcD,IACvBgmB,WAAW,KACThmB,KACCgM,KCcD,MAAO2+F,GAaXx5E,YAAag3D,GAVb,KAAAvqB,MAAuB,IAAIusC,EAC3B,KAAA/iB,MAA+D6P,iBAAI,IACnE,KAAAxO,SAAkDwO,iBAAI,MACtD,KAAAV,WAA2BU,kBAAI,GAC/B,KAAAgE,qBAAoChE,kBAAK,GACzC,KAAAiS,aAA6BjS,kBAAI,GACjC,KAAAiI,UAA0BjI,kBAAI,GAC9B,KAAA2C,QAAwB3C,kBAAI,GAI1Bz0F,KAAK2lF,OAASA,EACd3lF,KAAKkgG,QAAU,IAAInB,EAAQpZ,GAE3B3lF,KAAK4zF,YAAcrrE,sBAAS,IACnBvoB,KAAK08F,UAAUxkG,OAAS8H,KAAKo3F,QAAQl/F,OAI1CsvG,QACJ5iB,G,sDAEA5kF,KAAK0mG,aAAaxuG,OAAQ,EAC1B,MAAM,UAAEqvG,SAAoBS,EAAiBpjB,GAE7C,OADA5kF,KAAK0mG,aAAaxuG,OAAQ,EACnB,CAAEqvG,gBAGLG,UAAW9iB,GAAsD,IAAfuiB,EAAWvqE,UAAAjgC,OAAA,QAAAG,IAAA8/B,UAAA,GAAAA,UAAA,GAAG,E,sDACpE,GAAoB,IAAhBuqE,QACInnG,KAAKooG,cAAcxjB,OAEtB,CACH,MAAMyjB,EAAkBvsC,YAAY,IAAW5gE,eAAA,gCAC7C,MAAMooB,GAAM,IAAInC,MAAO8lF,UACnBE,EAAc7jF,IAChBq4C,cAAc0sC,SACRroG,KAAKsoG,UAAU,IAAW1jB,EAAM,UAChC5kF,KAAKooG,cAAcxjB,OAE1B,SAID6iB,YAAajB,G,4DACXxmG,KAAKsoG,UAAU,WACftoG,KAAKooG,cAAc5B,MAGrB8B,UAAWt9D,EAAci7C,G,uDACjB,OAARA,QAAQ,IAARA,OAAQ,EAARA,EAAUrB,MAAMr7B,SAAU,CAAC48B,OAASU,YAAaV,OAASwS,cAAcrqE,SAAS23D,EAASrB,MAAMr7B,UAIpGvpD,KAAKo3F,QAAQl/F,OAAQ,EACrB8H,KAAKo7D,MAAMiP,MAAMr/B,SACXhrC,KAAKo7D,MAAMyhC,OACjB78F,KAAKo3F,QAAQl/F,OAAQ,MAGjBkwG,cAAexjB,G,sDACnB5kF,KAAK4kF,MAAM1sF,MAAQ0sF,EACnB,MAAM2jB,EAAYL,GAAoBloG,KAAK4kF,MAAM1sF,OAEjD8H,KAAK08F,UAAUxkG,OAAQ,EACvB8H,KAAKo7D,MAAMiP,MAAMk+B,GACjBvoG,KAAKwoG,kBAGDjK,Y,qEACmB,QAAnBh7F,EAAAvD,KAAKimF,SAAS/tF,aAAK,IAAAqL,OAAA,EAAAA,EAAEnJ,OAAsC,UAAX,QAAnBoJ,EAAAxD,KAAKimF,SAAS/tF,aAAK,IAAAsL,OAAA,EAAAA,EAAEpJ,OACpDkuF,OAASC,GAAG,2BAA4B,CACtC7wF,GAAIsI,KAAKimF,SAAS/tF,MAAMurF,KACxBglB,YAA6C,QAAhC/kG,EAAW,QAAXD,EAAAzD,KAAK2lF,cAAM,IAAAliF,OAAA,EAAAA,EAAE/H,KAAKxD,MAAM+qF,gBAAQ,IAAAv/E,OAAA,EAAAA,EAAEzK,KAC/CyvG,QAA4B,QAAnB/kG,EAAA3D,KAAKimF,SAAS/tF,aAAK,IAAAyL,OAAA,EAAAA,EAAEigF,eAIlC5jF,KAAKo7D,MAAMwsC,aACL5nG,KAAKwoG,kBAGPA,e,sDACJ,MAAMv7F,EAAQjN,KAAK2oG,wBAEnB,GAAI17F,IAAUjN,KAAK4kF,MAAM1sF,MAAMyE,OAE7B,YADAqD,KAAKqK,SAIP,MAAM47E,EAAWjmF,KAAK4kF,MAAM1sF,MAAM+U,GAElC,OAAI27F,eAAiB3iB,EAASrB,MAAMr7B,SAClCvpD,KAAK6oG,YAAY,MACjB7oG,KAAK+zF,WAAW77F,OAAQ,QAElBk2B,GAAK,KAEXpuB,KAAK+zF,WAAW77F,OAAQ,OAExB8H,KAAK8oG,eAAe7iB,IAIb,CAACE,OAASU,YAAaV,OAASwS,cAAcrqE,SAAS23D,EAASrB,MAAMr7B,SAC7EvpD,KAAK6oG,YAAY,MACjB7oG,KAAK+zF,WAAW77F,OAAQ,QAElBk2B,GAAKpuB,KAAK+oG,qBAAqB9iB,SAErCjmF,KAAK8oG,eAAe7iB,SAKtBjmF,KAAK8oG,eAAe7iB,MAGd8iB,qBAAsB9iB,GAC5B,GAAIA,EAASrB,MAAMr7B,SAAW48B,OAASU,YAAa,CAClD,GAAgD,IAA5C7mF,KAAK2lF,OAAOjqF,KAAKxD,MAAMorF,iBACzB,OAAO4hB,EAAgB8D,IAEzB,GAAgD,IAA5ChpG,KAAK2lF,OAAOjqF,KAAKxD,MAAMorF,iBACzB,OAAO4hB,EAAgB+D,IAEzB,GAAgD,IAA5CjpG,KAAK2lF,OAAOjqF,KAAKxD,MAAMorF,iBACzB,OAAO4hB,EAAgBgE,MAI3B,OAAOpE,EAGKgE,eAAgB7iB,G,sDAC5B,GAAIA,EAAU,CAQZ,GAPK,CAACE,OAASU,YAAaV,OAASwS,cAAcrqE,SAAS23D,EAASrB,MAAMr7B,SACzEvpD,KAAK2lF,OAAOwjB,WAAWC,eAAenjB,GAGxCjmF,KAAK6oG,YAAY5iB,GACjBjmF,KAAKkgG,QAAQlB,YAAY/Y,GAErB,CAACE,OAASU,YAAaV,OAASwS,cAAcrqE,SAAS23D,EAASrB,MAAMr7B,QACxE,aAGIvpD,KAAKqpG,gBAAgBpjB,OAI/B0iB,wBAEE,OADA3oG,KAAKy4F,qBAAqBvgG,OAAS,EAC5B8H,KAAKy4F,qBAAqBvgG,MAGnC2wG,YAAa5iB,GAEX,OADAjmF,KAAKimF,SAAS/tF,MAAQ+tF,EACfjmF,KAAKimF,SAAS/tF,MAGjBmxG,gBAAiBpjB,G,kEACrB,MAAMqjB,EAAuD,QAArC9lG,EAAyB,QAAzBD,EAAA0iF,EAASnB,YAAYgC,YAAI,IAAAvjF,OAAA,EAAAA,EAAEurC,kBAAU,IAAAtrC,OAAA,EAAAA,EAAE9K,SACzD6wG,EAAyD,QAAtC7lG,EAA0B,QAA1BD,EAAAwiF,EAASnB,YAAYyB,aAAK,IAAA9iF,OAAA,EAAAA,EAAEqrC,kBAAU,IAAAprC,OAAA,EAAAA,EAAEhL,SAC3D8wG,GAAWF,IAAoBC,EAEjCC,UACIxpG,KAAKo7D,MAAMyhC,KAAK,YAChB78F,KAAKu+F,gBAIfl0F,S,QACOrK,KAAKimF,SAAS/tF,MAGmB,SAA7B8H,KAAKimF,SAAS/tF,MAAMkC,OAC3BkuF,OAASC,GAAG,iBAAkB,CAC5B7wF,GAAIsI,KAAKimF,SAAS/tF,MAAMurF,KACxBglB,YAA4C,QAA/BllG,EAAAvD,KAAK2lF,OAAOjqF,KAAKxD,MAAM+qF,gBAAQ,IAAA1/E,OAAA,EAAAA,EAAEtK,KAC9CyvG,QAA4B,QAAnBllG,EAAAxD,KAAKimF,SAAS/tF,aAAK,IAAAsL,OAAA,EAAAA,EAAEogF,eAEhC0E,OAASmhB,UAAU,CAAElhD,MAAO,aAR5B+U,OAAO2pB,QAAQ6X,EAAa4K,2BAA2B,EAAO,CAAEtvG,KAAM4F,KAAK2lF,OAAOvrF,OAWpF4F,KAAKo7D,MAAMiP,QACXrqE,KAAK08F,UAAUxkG,OAAQ,EACvB8H,KAAKo3F,QAAQl/F,OAAQ,EACrB8H,KAAKy4F,qBAAqBvgG,OAAS,EACnC8H,KAAKimF,SAAS/tF,MAAQ,M,qECtMpB,MAAO+B,GAKX00B,YAAag3D,GAHb,KAAA7qF,QAAU,GACV,KAAAN,iBAAmBi6F,iBAAY,GAG7Bz0F,KAAK2lF,OAASA,EAGhB/pC,OACE,IAAK57C,KAAK2lF,OAAOvrF,KAAM,OACvB4F,KAAKlF,QAAU,cAAckF,KAAK2lF,OAAOvrF,KAEzC,MAAM,KACJK,EAAI,iBACJD,GACEL,gBAAO6F,KAAK2lF,OAAOvrF,MAEvB4F,KAAKxF,iBAAiBtC,MAAQsC,EAE9BwF,KAAK2pG,cAAclvG,GACnBuF,KAAK4pG,qBAAqBnvG,GAGpBkvG,cAAelvG,GACrBA,EAAKK,QAAQkF,KAAKlF,SACf0tD,OAAOqhD,QAAkCthD,IACxCvoD,KAAKxF,iBAAiBtC,MAAQqwD,EAAMkhB,qBAIlCmgC,qBAAsBnvG,GAC5BA,EAAKqvG,QAAQ9pG,KAAKlF,SACf0tD,OAAOqhD,QAA8BthD,IACpCvoD,KAAK2lF,OAAOjqF,KAAKxD,MAAQ6xG,gBAAuBxhD,KAEjDC,OAAOqhD,QAA8BthD,IAChCA,EAAMpwD,QACR6B,OAAOy9D,SAASuyC,WAGnBxhD,OAAOqhD,QAA4B,IAAW3uG,eAAA,sCACvC8E,KAAK2lF,OAAO+C,cAAc0e,cAEjC5+C,OAAOqhD,QAA2BthD,IACjCvoD,KAAK2lF,OAAOskB,YAAYC,cAAc9gB,QAAa+gB,iBAE/C5hD,EAAMpwD,SACR6H,KAAK2lF,OAAOykB,WAAa7hD,EAAM7sD,KAAK8O,OACpCxK,KAAK2lF,OAAO0kB,SAASliB,iBAAiB5/B,IAGxCvoD,KAAKsqG,aAAa/hD,EAAM7nD,WAEzB8nD,OAAOqhD,QAA+BthD,IACrCvoD,KAAK2lF,OAAOskB,YAAYC,cAAc9gB,QAAamhB,gBAC/ChiD,EAAMpwD,QACR6H,KAAK2lF,OAAO0kB,SAASvhB,sBAAsBvgC,KAG9CC,OAAOqhD,QAAgCthD,IAClCA,EAAMpwD,QACR6H,KAAK2lF,OAAO0kB,SAASzhB,qBAAqBrgC,KAG7CC,OAAOqhD,QAA2BthD,IAC7BA,EAAMpwD,QACR6H,KAAK2lF,OAAO0kB,SAASzhB,qBAAqBrgC,KAG7CC,OAAOqhD,QAAoCthD,IACtCA,EAAMpwD,QACR6H,KAAK2lF,OAAO0kB,SAASzhB,qBAAqBrgC,KAG7CC,OAAOqhD,QAAgCthD,IAClCA,EAAMpwD,QACR6H,KAAK2lF,OAAOia,SAAS2B,QAAQW,SAGhC15C,OAAOqhD,QAA8BthD,IAChCA,EAAMpwD,QACR6H,KAAK2lF,OAAOia,SAAS93E,MAAMygC,EAAM7sD,QAGpC8sD,OAAOqhD,QAAkCthD,IACpCA,EAAMpwD,SACR6H,KAAK2lF,OAAOjqF,KAAKxD,MAAMwqF,YAAa,KAGvCl6B,OAAOqhD,QAAgCthD,IAClCA,EAAMpwD,QACR6H,KAAK2lF,OAAO6kB,gBAAgBvE,UAAU19C,EAAM7sD,QAK5C4uG,aAAc5pG,GAChBA,IAAYV,KAAK2lF,OAAOjlF,UACE,OAAxBV,KAAK2lF,OAAOjlF,QACdV,KAAK2lF,OAAOjlF,QAAUA,EAGtB1G,OAAOy9D,SAASuyC,WClGlB,MAAOS,GA2DX97E,YAAag3D,GAzDb,KAAA+kB,OAAQ,EACR,KAAAC,QAAS,EACT,KAAAC,SAA2C,CACzC,CAACxhB,QAAayhB,cAAe,CAC3BC,UAAU,IAAI3pF,MAAO8lF,UACrB8D,SAAUtG,EACVhpF,KAAMA,IAAWvgB,eAAA,gCACf,KAAI8E,KAAK2lF,OAAOxrF,OAAOK,iBAAiBtC,MAAQ,IAE3C8H,KAAK2lF,OAAOjqF,KAAKxD,MAAMkrF,WAA5B,CAIA9lB,OAAOI,MAAM,YAEb,IACE,MAAMniE,QAAYyvG,OAAIrlB,OAAOslB,WAAW,CAAE7wG,KAAM4F,KAAK2lF,OAAOvrF,OAC5D4F,KAAK2qG,OAASpvG,EAAIpD,OAEpB,MAAOkoF,GACL/iB,OAAOvkB,MAAM+lD,EAAaoM,qBAAqB,EAAM7qB,GACrDrgF,KAAK2qG,QAAS,QAIpB,CAACvhB,QAAa+gB,iBAAkB,CAC9BW,UAAU,IAAI3pF,MAAO8lF,UACrB8D,SAAUtG,EACVhpF,KAAMA,KACJ,GAAIzb,KAAK2lF,OAAOxrF,OAAOK,iBAAiBtC,MAAQ,EAAG,OAEnD,GAAI8H,KAAK2lF,OAAOjqF,KAAKxD,MAAMkrF,aAAepjF,KAAK2qG,OAC7C,OAGFrtC,OAAOI,MAAM,cAEb,MAAMhiE,EAAO,CACXuF,MAAOjH,OAAOyhG,WACdv6F,OAAQlH,OAAOmxG,aAEjBH,OAAIrlB,OAAOylB,oBAAoB,CAAEhxG,KAAM4F,KAAK2lF,OAAOvrF,KAAMsB,WAG7D,CAAC0tF,QAAamhB,gBAAiB,CAC7BO,UAAU,IAAI3pF,MAAO8lF,UAAYvC,EACjCqG,SAAUrG,EACVjpF,KAAMA,KACAzb,KAAK2lF,OAAOxrF,OAAOK,iBAAiBtC,MAAQ,IAEhDolE,OAAOI,MAAM,oBAEbstC,OAAIrlB,OAAO0lB,mBAAmB,CAAEjxG,KAAM4F,KAAK2lF,OAAOvrF,WAMtD4F,KAAK2lF,OAASA,EAGV/pC,O,sDACJ57C,KAAK6mG,MAAMzd,QAAayhB,oBAElBz8E,GAAKy2E,GAEX/oC,YAAY,IAAW5gE,eAAA,gCACrB,IAAK8E,KAAK2lF,OAAO2lB,0BAA2B,OAC5C,GAAItrG,KAAK2lF,OAAOxrF,OAAOK,iBAAiBtC,MAAQ,EAAG,OAEnD,MAAMqzG,EAA6BvrG,KAAK2lF,OAAO+C,cAAc6d,MAAM5pG,OAAS,GAC5E,IAAI4uG,EAEJ,IAAK,MAAMlxG,KAAO2F,KAAK4qG,SACrB5qG,KAAK6mG,MAAMxsG,MAEZiqG,MAGL4F,cAAe5hF,GAAgC,IAAbkjF,EAAS5uE,UAAAjgC,OAAA,QAAAG,IAAA8/B,UAAA,GAAAA,UAAA,GAAG,EAC5C,MAAM6uE,EAAWD,GAAaxrG,KAAK4qG,SAAStiF,GAAMyiF,SAClD/qG,KAAK4qG,SAAStiF,GAAMwiF,UAAW,IAAI3pF,MAAO8lF,UAAYwE,EAGlD5E,MAAOv+E,G,sDACX,MAAMhF,GAAM,IAAInC,MAAO8lF,UACjB34C,EAAUtuD,KAAK4qG,SAAStiF,GAE1BhF,EAAMgrC,EAAQw8C,WAChB9qG,KAAKkqG,cAAc5hF,GACnBtoB,KAAK0rG,YAAYp9C,EAAShmC,OAIxBojF,YAAap9C,EAAmBhmC,G,sDACpC,UACQgmC,EAAQ7yC,OAEhB,MAAOs9B,GACL/4C,KAAK2rG,kBAAkB5yD,EAAOzwB,OAIlCqjF,kBAAmB5yD,EAAgBzwB,GACjC,GAAqB,kBAAVywB,EAKX,GAAqB,kBAAVA,GAAgC,OAAVA,EAsBjCukB,OAAO2pB,QAAQ,sBAAsB3+D,sBAAyB,EAAO,CAAEywB,cAtBvE,CACE,GAAI,SAAUA,EAAO,CACnB,MAAM6yD,EAAuC,wBAAf7yD,EAAMtrC,KAC9Bo+F,EAAqC,qBAAf9yD,EAAMtrC,KAC5Bq+F,EAA2B,uBAAf/yD,EAAMtrC,KAGxB,GAAIm+F,GAAyBC,GAAuBC,EAClD,OAIA,YAAa/yD,EACfukB,OAAO2pB,QAAQ,sBAAsB3+D,MAASywB,EAAMzX,WAAW,EAAO,CAAEyX,UAEjE,SAAUA,GACjBukB,OAAO2pB,QAAQ,sBAAsB3+D,MAASywB,EAAMtrC,QAAQ,EAAO,CAAEsrC,eApBvEukB,OAAO2pB,QAAQ,sBAAsB3+D,MAASywB,KAAS,I,iBCxHvD,MAAOgzD,WAAyBC,QACpCr9E,cACEs9E,eAEOjsG,KAAKxE,MAAMylB,SAAS2qC,QAAQsgD,OAAO,mBAC1ClsG,KAAKxE,MAAMylB,SAAS2qC,QAAQnwD,KAAK,gBAAkB,oBAIhD,MAAMmxD,GAAS,IAAIm/C,GAEpB,MAAOI,WAAsBvN,QAC1BuN,GAAAv/C,OAASA,GACTu/C,GAAAC,OAAS9xG,gC,iBCNZ,MAAO+xG,GAKX19E,YAAag3D,GAHb,KAAAxI,SAAU,EACF,KAAA/hB,MAA+B,KAGrCp7D,KAAK2lF,OAASA,EAGhBqX,SACMh9F,KAAKm9E,UAETn9E,KAAKm9E,SAAU,EAEfn9E,KAAKo7D,MAAQ53C,WAAW,KACtBxjB,KAAKm9E,SAAU,GACd4nB,IAGL9H,UACMj9F,KAAKo7D,OACPh4C,aAAapjB,KAAKo7D,OAEpBp7D,KAAKm9E,SAAU,EAGXisB,eACJnjB,GACW,IAAX1yC,EAAO3W,UAAAjgC,OAAA,QAAAG,IAAA8/B,UAAA,GAAAA,UAAA,GAAG,E,8DAIV,GAFA4gC,QAAQC,IAAI,UAAWz9D,KAAKm9E,SAC5B3f,QAAQC,IAAI,mCAAkD,QAAdl6D,EAAA0iF,EAASrB,aAAK,IAAArhF,OAAA,EAAAA,EAAEiiF,mBAC3DxlF,KAAKm9E,WACW,QAAd35E,EAAAyiF,EAASrB,aAAK,IAAAphF,OAAA,EAAAA,EAAEgiF,kBACnB,OAIJ,GAAIxlF,KAAK2lF,OAAOxrF,OAAOK,iBAAiBtC,MAAQ,EAAG,OAEnD,IAAK+tF,IAAajmF,KAAK2lF,OAAOjqF,KAAM,aAE9B0yB,GAAK42E,GAEX,MAAMtpG,EAAOsE,KAAKssG,kBAAkBrmB,GAEpC,GAAKvqF,EAEL,UACQywG,GAAc1wG,KAClBuE,KAAK2lF,OAAOjqF,KAAKxD,MAAM2pF,SACvB3nB,KAAKkC,UAAU1gE,GACf,CAAEmjG,aAAa,IAEjBvhC,OAAOI,MAAM,wBAAwBuoB,EAAS7rF,MAEhD,MAAOimF,GACD9sC,EAAU,EACZ/vB,WAAW,KACTxjB,KAAKopG,eAAenjB,EAAU1yC,EAAU,IACvC,MAGH+pB,OAAO8hC,SAASN,EAAayN,wBAAwB,EAAOlsB,OAK1DisB,kBAAmBrmB,G,QACzB,MAAMumB,EAAaxsG,KAAK2lF,OAAOjqF,KAAKxD,MAEpC,GAAIs0G,EAAW3qB,WAAa4qB,QAASC,QACnC,MAAO,CACLtyG,KAA4B,QAAtBmJ,EAAAvD,KAAK2lF,OAAOykB,kBAAU,IAAA7mG,OAAA,EAAAA,EAAE7L,GAC9B2wF,GAAIpC,EAAS7rF,KACbuyG,WAAY1mB,EAASvC,gBAIzB,OAAQ8oB,EAAW3qB,UACjB,KAAK4qB,QAASG,OACd,KAAKH,QAASI,MACd,KAAKJ,QAASK,QACZ,MAAO,CACLxP,SAAyC,QAA/B95F,EAAAgpG,EAAWA,EAAW3qB,iBAAS,IAAAr+E,OAAA,EAAAA,EAAE85F,SAC3CjV,GAAIpC,EAAS7rF,KACbuyG,WAAY1mB,EAASvC,gBAEzB,QACE,OAAO,O,2CCjFT,MAAOqpB,GAgBXp+E,cAAsB,IAATv0B,EAAIwiC,UAAAjgC,OAAA,QAAAG,IAAA8/B,UAAA,GAAAA,UAAA,GAAG,GAbpB,KAAAl8B,QAAyB,KACzB,KAAAhF,KAAO+4F,iBAAa9S,SACpB,KAAAqrB,SAAWvY,kBAAI,GACf,KAAAhO,QAAUgO,kBAAI,GACd,KAAAwV,YAAc,IAAIQ,GAAYzqG,MAC9B,KAAA0oF,cAAgB,IAAI4d,EAActmG,MAClC,KAAA2zF,iBAAmB,IAAIwU,GAAiBnoG,MACxC,KAAA4/F,SAAW,IAAI8D,EAAS1jG,MACxB,KAAAqqG,SAAW,IAAIniB,QAASloF,MACxB,KAAAwqG,gBAAkB,IAAI3E,EAAgB7lG,MACtC,KAAAmpG,WAAa,IAAIkD,GAAWrsG,MAC5B,KAAAoqG,WAAiC,KAG/BpqG,KAAK5F,KAAOA,EACRA,GACF4F,KAAK47C,OAEP57C,KAAK7F,OAAS,IAAIF,GAAO+F,MAG3B,eACE,OAAOA,KAAKtE,KAAKxD,MAAM8pF,YAAYrvB,OAASsvB,QAAgBgrB,OAG9D,4B,QACE,OAA+B,QAAxB1pG,EAAAvD,KAAKtE,KAAKxD,MAAM+qF,gBAAQ,IAAA1/E,OAAA,EAAAA,EAAE2pG,WAAmC,QAAxB1pG,EAAAxD,KAAKtE,KAAKxD,MAAM+qF,gBAAQ,IAAAz/E,OAAA,EAAAA,EAAE2pG,iBAGxE,gCACE,QAAInzG,OAAOyhG,WAAa,MAAQzhG,OAAOmxG,YAAc,KAMjDvvD,O,4DACJ0hB,OAAOI,MAAM,eAGC,QAAdn6D,EAAM,OAANvJ,aAAM,IAANA,YAAM,EAANA,OAAQozG,cAAM,IAAA7pG,KAAE8pG,UAEhBrtG,KAAKstG,mBACCttG,KAAKutG,uBACLvtG,KAAKwtG,cAGPxtG,KAAKytG,wBAITztG,KAAK7F,OAAOyhD,OACZ57C,KAAKgtG,SAAS90G,OAAQ,EACtB8H,KAAK4/F,SAAShkD,OACd57C,KAAK0oF,cAAc9sC,aAEbxtB,GAAKu2E,EAAuBE,GAElC7kG,KAAKiqG,YAAYruD,OACjB57C,KAAKmpG,WAAWnM,aAGlBsQ,aACE,MAAMpzG,EAAM,IAAI67F,IAAI/7F,OAAOy9D,SAASu+B,MACpCh2F,KAAKymF,QAAQvuF,QAAUgC,EAAIwzG,aAAa3jF,IAAI,SAGxCwjF,iB,8DACJ,GAAKvtG,KAAK5F,KACV,UACQ4wG,OAAIrlB,OAAOqX,OAAO,CAAE5iG,KAAM4F,KAAK5F,OAEvC,MAAO2+C,GAIL,GAHAukB,OAAO2pB,QAAQ,2BAA2B,EAAO,CAAE7sF,KAAM4F,KAAK5F,KAAM2+C,UAG5B,OAAb,QAAvBv1C,EAAa,QAAbD,EAAK,OAALw1C,QAAK,IAALA,OAAK,EAALA,EAAO40D,cAAM,IAAApqG,OAAA,EAAAA,EAAE62F,gBAAQ,IAAA52F,OAAA,EAAAA,EAAErL,QAM3B,MAAM,IAAIyH,MAAM,0BAA0BI,KAAK5F,MAL/CopB,WAAW,KACTxjB,KAAKutG,kBACJ,SAQHC,c,sDACJ,GAAKxtG,KAAK5F,KACV,IACE4F,KAAKtE,KAAKxD,YAAc8yG,OAAIrlB,OAAOioB,MAAM,CAAExzG,KAAM4F,KAAK5F,OAExD,MAAOimF,GACL/iB,OAAO2pB,QAAQ,yBAAyB,EAAO,CAAE7sF,KAAM4F,KAAK5F,KAAMimF,YAItEwtB,iBAAkBloB,G,QAChB,IACI,OAAFoS,eAAE,IAAFA,mBAAI+V,SAASC,UAAU,CACrB72B,QAAS,CACPyO,OAAQ,CACNvrF,KAAMurF,EAAOvrF,KACbynF,SAAU8D,EAAO9D,SACjB1E,QAASwI,EAAOxI,QAChBmgB,SAAyB,QAAf/5F,EAAAoiF,EAAO1C,gBAAQ,IAAA1/E,OAAA,EAAAA,EAAEtK,KAC3B+0G,OAAuB,QAAfxqG,EAAAmiF,EAAO1C,gBAAQ,IAAAz/E,OAAA,EAAAA,EAAEwqG,WAKjC,MAAO3tB,GAEL7iB,QAAQzkB,MAAM,iC,yDCrIpB/5C,OAAOM,eAAezF,EAAS,aAAc,CAC3C3B,OAAO,IAET2B,EAAQuV,KAAOvV,EAAQ6S,YAAc7S,EAAQsgE,WAAQ,EAErD,IAAIA,EAAQ,SAASA,EAAM3vD,EAAQmE,GACjC,IAAI3Q,EAAS4+B,UAAUjgC,OAAS,QAAsBG,IAAjB8/B,UAAU,GAAmBA,UAAU,GAAK,GAC7E5uB,EAAS4uB,UAAUjgC,OAAS,QAAsBG,IAAjB8/B,UAAU,GAAmBA,UAAU,GAAK5+B,EAEjF,GAAIkF,MAAM8iB,QAAQrX,GAChBA,EAAOvP,SAAQ,SAAU6uG,GACvB,OAAO9zC,EAAM3vD,EAAQyjG,EAAYjwG,EAAQgQ,WAEtC,GAAsB,oBAAXW,EAChBA,EAAOnE,EAAQxM,EAAQgQ,EAAQmsD,OAC1B,CACL,IAAI9/D,EAAM2E,OAAOE,KAAKyP,GAAQ,GAE1BzL,MAAM8iB,QAAQrX,EAAOtU,KACvB2T,EAAO3T,GAAO,GACd8/D,EAAM3vD,EAAQmE,EAAOtU,GAAM2D,EAAQgQ,EAAO3T,KAE1C2T,EAAO3T,GAAOsU,EAAOtU,GAAKmQ,EAAQxM,EAAQgQ,EAAQmsD,GAItD,OAAOn8D,GAGTnE,EAAQsgE,MAAQA,EAEhB,IAAIztD,EAAc,SAAqBiC,EAAQu/F,GAC7C,OAAO,SAAU1jG,EAAQxM,EAAQgQ,EAAQmsD,GACnC+zC,EAAc1jG,EAAQxM,EAAQgQ,IAChCmsD,EAAM3vD,EAAQmE,EAAQ3Q,EAAQgQ,KAKpCnU,EAAQ6S,YAAcA,EAEtB,IAAI0C,EAAO,SAAcT,EAAQw/F,GAC/B,OAAO,SAAU3jG,EAAQxM,EAAQgQ,EAAQmsD,GACvC,IAAI3J,EAAM,GACN49C,EAAgB5jG,EAAO2B,IAE3B,MAAOgiG,EAAa3jG,EAAQxM,EAAQgQ,GAAS,CAC3C,IAAIqgG,EAAY,GAIhB,GAHAl0C,EAAM3vD,EAAQmE,EAAQ3Q,EAAQqwG,GAG1B7jG,EAAO2B,MAAQiiG,EACjB,MAGFA,EAAgB5jG,EAAO2B,IACvBqkD,EAAInkD,KAAKgiG,GAGX,OAAO79C,IAIX32D,EAAQuV,KAAOA,G,kCC3Df,MAAMk/F,EAAU,8BACVC,EAAS,iBACTC,EAAW,aACXC,EAAY,gHACZC,EAAQ,qCACRvxF,EAAS,oCAKTwxF,EAAW,IAAIv6F,OAAO,IAAIk6F,OAAc,KACxCM,EAAU,IAAIx6F,OAAO,IAAIm6F,OAAa,KACtCM,EAAY,IAAIz6F,OAAO,IAAIo6F,OAAe,KAC1CM,EAAY,IAAI16F,OAAO,IAAIq6F,OAAgB,KAC3CM,EAAe,IAAI36F,OACvB,eAAes6F,WAAevxF,cAAmBA,SAM7C4B,EAAQ,GAERiwF,EAAgB,GAWtBp1G,EAAOC,QAAUyC,IAEf,GAAIyiB,EAAMziB,GAAM,OAAOyiB,EAAMziB,GAG7B,MAAM2yG,EAAaF,EAAahtF,KAAKzlB,GACrC,IAAK2yG,EAAY,OAGjB,MAAMC,EAAO,CACXC,OAAQ,SACR3jG,MAAO,SACP4jG,QAAS,SACTC,QAAS,SACTnvG,KAAMwZ,WAAWu1F,EAAW,IAC5BnoB,KAAMmoB,EAAW,GACjBK,OAAQL,EAAW,GAAGjzG,QAAQ,QAAS,IAAIA,QAAQ,SAAU,MAI/D,IAAImzG,EAAQ3jG,EAAO6jG,EAASD,EAE5B,MAAMvmD,EAASvsD,EAAI23C,UAAU,EAAGg7D,EAAWhiG,OAQ3C,QAPKkiG,EAASR,EAAS5sF,KAAK8mC,MAAUqmD,EAAKC,OAASA,EAAO,KACtD3jG,EAAQojG,EAAQ7sF,KAAK8mC,MAAUqmD,EAAK1jG,MAAQA,EAAM,KAClD6jG,EAAUR,EAAU9sF,KAAK8mC,MAAUqmD,EAAKG,QAAUA,EAAQ,KAC1DD,EAAUN,EAAU/sF,KAAK8mC,MAAUqmD,EAAKE,QAAUA,EAAQ,IAIvDF,EAAKpoB,MACX,IAAK,KACHooB,EAAKhvG,MAAQ,IACb,MACF,IAAK,KACHgvG,EAAKhvG,MAAQ,GACb,MACF,IAAK,KACHgvG,EAAKhvG,MAAQ,GACb,MACF,IAAK,KACHgvG,EAAKhvG,MAAQ,GAAO,KACpB,MACF,IAAK,KACHgvG,EAAKhvG,MAAQ,GAAO,KACpB,MACF,IAAK,IAGH,MACF,IAAK,KACL,IAAK,MACHgvG,EAAKhvG,MAAQ8uG,EAAgB,IAC7B,MACF,IAAK,IACHE,EAAKhvG,MAAQ,GAAK,KAAO,EACzB,MAGJ,OAAQ6e,EAAMziB,GAAO4yG,I,kCCnGhB,IAAKzC,EAAZ,2CAAYA,GACVA,EAAA,qBACAA,EAAA,mBACAA,EAAA,iBACAA,EAAA,oBAJF,CAAYA,MAAQ","file":"js/chunk-1afa098a.6a99a8f5.js","sourcesContent":["import { Currency } from 'lib/types/currency'\nimport { FreemiumPosition, IFreemiumGoal, IFreemiumPoll } from 'lib/types/streamer-freemium/freemium-setup'\nimport { IFreemiumSupporter } from 'lib/types/streamer-freemium/freemium-supporters'\nimport { IFreemiumWidget } from 'lib/types/streamer-freemium/freemium-widget'\n\nexport const demoGoal: IFreemiumGoal = {\n id: 1,\n title: 'New laptop',\n description: 'New laptop',\n currency: Currency.USD,\n publicTotal: false,\n total: 100,\n value: 25,\n status: true,\n position: FreemiumPosition.LEFT_TOP_CORNER,\n}\n\nexport const demoPoll: IFreemiumPoll = {\n id: 2,\n question: 'What game should I play next?',\n answers: [\n 'Answer 1',\n 'Answer 2',\n 'Answer 3',\n 'Answer 4',\n 'Answer 5',\n ],\n duration: 10,\n remainder_duration: 1000 * 60 * 10,\n votes_total: 100,\n position: FreemiumPosition.RIGHT_TOP_CORNER,\n end_condition: 'duration',\n max_votes: 100,\n}\n\nconst supporters: IFreemiumSupporter[] = [\n {\n id: 1,\n name: 'KayAitchAyElEyeEl',\n updatedAt: '1',\n },\n {\n id: 2,\n name: 'Bundy_Burundi',\n updatedAt: '2',\n },\n {\n id: 3,\n name: 'Big_Rig',\n updatedAt: '3',\n },\n]\n\nexport const demoResults: IFreemiumWidget = {\n goalProgress: 25,\n pollResults: [\n 60, 24, 10, 6, 0,\n ],\n supporters: {\n top: supporters,\n topToday: supporters,\n recent: supporters,\n },\n}\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fullscreen.vue?vue&type=style&index=0&id=26f2d39d&prod&lang=scss&scoped=true&\"","import axios from 'axios'\nimport Echo from 'laravel-echo'\nimport Pusher, { AuthorizerCallback, Channel } from 'pusher-js'\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nwindow.Pusher = Pusher\n\nconst url = `${process.env.VUE_APP_API_URL}broadcasting/auth`\n\nexport function pusher (slug: string) {\n const key = process.env.VUE_APP_PUSHER_APP_KEY\n const cluster = process.env.VUE_APP_PUSHER_APP_CLUSTER\n\n let subscribersCount = 0\n\n const echo = new Echo({\n broadcaster: 'pusher',\n key,\n cluster,\n forceTLS: true,\n authorizer: (channel: Channel) => ({\n authorize: async (socketId: number, callback: AuthorizerCallback) => {\n const params = {\n socket_id: socketId,\n channel_name: channel.name,\n slug: slug,\n }\n\n subscribersCount = channel.subscriptionCount as unknown as number\n\n const res = await axios.post(url, params)\n callback(null, res.data)\n },\n }),\n })\n\n return { echo, subscribersCount }\n}\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Leaderboard.vue?vue&type=style&index=0&id=5a688d7d&prod&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QrCode.vue?vue&type=style&index=0&id=3915f34a&prod&lang=scss&scoped=true&\"","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createCanvas } from \"canvas\";\nimport { decompressFrames, parseGIF } from \"./gifuct-js/index\";\nimport { QRCodeModel, QRErrorCorrectLevel, QRUtil } from \"./qrcode\";\nimport GIFEncoder from \"./gif.js/GIFEncoder\";\nconst defaultScale = 0.4;\nfunction loadImage(url) {\n if (!url) {\n return undefined;\n }\n function cleanup(img) {\n img.onload = null;\n img.onerror = null;\n }\n return new Promise(function (resolve, reject) {\n if (url.slice(0, 4) == 'data') {\n let img = new Image();\n img.onload = function () {\n resolve(img);\n cleanup(img);\n };\n img.onerror = function () {\n reject('Image load error');\n cleanup(img);\n };\n img.src = url;\n return;\n }\n let img = new Image();\n img.setAttribute(\"crossOrigin\", 'Anonymous');\n img.onload = function () {\n resolve(img);\n };\n img.onerror = function () {\n reject('Image load error');\n };\n img.src = url;\n });\n}\nexport class AwesomeQR {\n constructor(options) {\n const _options = Object.assign({}, options);\n Object.keys(AwesomeQR.defaultOptions).forEach((k) => {\n if (!(k in _options)) {\n Object.defineProperty(_options, k, { value: AwesomeQR.defaultOptions[k], enumerable: true, writable: true });\n }\n });\n if (!_options.components) {\n _options.components = AwesomeQR.defaultComponentOptions;\n }\n else if (typeof _options.components === \"object\") {\n Object.keys(AwesomeQR.defaultComponentOptions).forEach((k) => {\n if (!(k in _options.components)) {\n Object.defineProperty(_options.components, k, {\n value: AwesomeQR.defaultComponentOptions[k],\n enumerable: true,\n writable: true,\n });\n }\n else {\n Object.defineProperty(_options.components, k, {\n value: Object.assign(Object.assign({}, AwesomeQR.defaultComponentOptions[k]), _options.components[k]),\n enumerable: true,\n writable: true,\n });\n }\n });\n }\n if (_options.dotScale !== null && _options.dotScale !== undefined) {\n if (_options.dotScale <= 0 || _options.dotScale > 1) {\n throw new Error(\"dotScale should be in range (0, 1].\");\n }\n _options.components.data.scale = _options.dotScale;\n _options.components.timing.scale = _options.dotScale;\n _options.components.alignment.scale = _options.dotScale;\n }\n this.options = _options;\n this.canvas = createCanvas(options.size, options.size);\n this.canvasContext = this.canvas.getContext(\"2d\");\n this.qrCode = new QRCodeModel(-1, this.options.correctLevel);\n if (Number.isInteger(this.options.maskPattern)) {\n this.qrCode.maskPattern = this.options.maskPattern;\n }\n if (Number.isInteger(this.options.version)) {\n this.qrCode.typeNumber = this.options.version;\n }\n this.qrCode.addData(this.options.text);\n this.qrCode.make();\n }\n draw() {\n return new Promise((resolve) => this._draw().then(resolve));\n }\n _clear() {\n this.canvasContext.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n static _prepareRoundedCornerClip(canvasContext, x, y, w, h, r) {\n canvasContext.beginPath();\n canvasContext.moveTo(x, y);\n canvasContext.arcTo(x + w, y, x + w, y + h, r);\n canvasContext.arcTo(x + w, y + h, x, y + h, r);\n canvasContext.arcTo(x, y + h, x, y, r);\n canvasContext.arcTo(x, y, x + w, y, r);\n canvasContext.closePath();\n }\n static _getAverageRGB(image) {\n const blockSize = 5;\n const defaultRGB = {\n r: 0,\n g: 0,\n b: 0,\n };\n let width, height;\n let i = -4;\n const rgb = {\n r: 0,\n g: 0,\n b: 0,\n };\n let count = 0;\n height = image.naturalHeight || image.height;\n width = image.naturalWidth || image.width;\n const canvas = createCanvas(width, height);\n const context = canvas.getContext(\"2d\");\n if (!context) {\n return defaultRGB;\n }\n context.drawImage(image, 0, 0);\n let data;\n try {\n data = context.getImageData(0, 0, width, height);\n }\n catch (e) {\n return defaultRGB;\n }\n while ((i += blockSize * 4) < data.data.length) {\n if (data.data[i] > 200 || data.data[i + 1] > 200 || data.data[i + 2] > 200)\n continue;\n ++count;\n rgb.r += data.data[i];\n rgb.g += data.data[i + 1];\n rgb.b += data.data[i + 2];\n }\n rgb.r = ~~(rgb.r / count);\n rgb.g = ~~(rgb.g / count);\n rgb.b = ~~(rgb.b / count);\n return rgb;\n }\n static _drawDot(canvasContext, centerX, centerY, nSize, xyOffset = 0, dotScale = 1) {\n canvasContext.fillRect((centerX + xyOffset) * nSize, (centerY + xyOffset) * nSize, dotScale * nSize, dotScale * nSize);\n }\n static _drawAlignProtector(canvasContext, centerX, centerY, nSize) {\n canvasContext.clearRect((centerX - 2) * nSize, (centerY - 2) * nSize, 5 * nSize, 5 * nSize);\n canvasContext.fillRect((centerX - 2) * nSize, (centerY - 2) * nSize, 5 * nSize, 5 * nSize);\n }\n static _drawAlign(canvasContext, centerX, centerY, nSize, xyOffset = 0, dotScale = 1, colorDark, hasProtector) {\n const oldFillStyle = canvasContext.fillStyle;\n canvasContext.fillStyle = colorDark;\n new Array(4).fill(0).map((_, i) => {\n AwesomeQR._drawDot(canvasContext, centerX - 2 + i, centerY - 2, nSize, xyOffset, dotScale);\n AwesomeQR._drawDot(canvasContext, centerX + 2, centerY - 2 + i, nSize, xyOffset, dotScale);\n AwesomeQR._drawDot(canvasContext, centerX + 2 - i, centerY + 2, nSize, xyOffset, dotScale);\n AwesomeQR._drawDot(canvasContext, centerX - 2, centerY + 2 - i, nSize, xyOffset, dotScale);\n });\n AwesomeQR._drawDot(canvasContext, centerX, centerY, nSize, xyOffset, dotScale);\n if (!hasProtector) {\n canvasContext.fillStyle = \"rgba(255, 255, 255, 0.6)\";\n new Array(2).fill(0).map((_, i) => {\n AwesomeQR._drawDot(canvasContext, centerX - 1 + i, centerY - 1, nSize, xyOffset, dotScale);\n AwesomeQR._drawDot(canvasContext, centerX + 1, centerY - 1 + i, nSize, xyOffset, dotScale);\n AwesomeQR._drawDot(canvasContext, centerX + 1 - i, centerY + 1, nSize, xyOffset, dotScale);\n AwesomeQR._drawDot(canvasContext, centerX - 1, centerY + 1 - i, nSize, xyOffset, dotScale);\n });\n }\n canvasContext.fillStyle = oldFillStyle;\n }\n _draw() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;\n return __awaiter(this, void 0, void 0, function* () {\n const nCount = (_a = this.qrCode) === null || _a === void 0 ? void 0 : _a.moduleCount;\n const rawSize = this.options.size;\n let rawMargin = this.options.margin;\n if (rawMargin < 0 || rawMargin * 2 >= rawSize) {\n rawMargin = 0;\n }\n const margin = Math.ceil(rawMargin);\n const rawViewportSize = rawSize - 2 * rawMargin;\n const whiteMargin = this.options.whiteMargin;\n const backgroundDimming = this.options.backgroundDimming;\n const nSize = Math.ceil(rawViewportSize / nCount);\n const viewportSize = nSize * nCount;\n const size = viewportSize + 2 * margin;\n const mainCanvas = createCanvas(size, size);\n const mainCanvasContext = mainCanvas.getContext(\"2d\");\n this._clear();\n // Translate to make the top and left margins off the viewport\n mainCanvasContext.save();\n mainCanvasContext.translate(margin, margin);\n const backgroundCanvas = createCanvas(size, size);\n const backgroundCanvasContext = backgroundCanvas.getContext(\"2d\");\n let parsedGIFBackground = null;\n let gifFrames = [];\n if (!!this.options.gifBackground) {\n const gif = parseGIF(this.options.gifBackground);\n parsedGIFBackground = gif;\n gifFrames = decompressFrames(gif, true);\n if (this.options.autoColor) {\n let r = 0, g = 0, b = 0;\n let count = 0;\n for (let i = 0; i < gifFrames[0].colorTable.length; i++) {\n const c = gifFrames[0].colorTable[i];\n if (c[0] > 200 || c[1] > 200 || c[2] > 200)\n continue;\n if (c[0] === 0 && c[1] === 0 && c[2] === 0)\n continue;\n count++;\n r += c[0];\n g += c[1];\n b += c[2];\n }\n r = ~~(r / count);\n g = ~~(g / count);\n b = ~~(b / count);\n this.options.colorDark = `rgb(${r},${g},${b})`;\n }\n }\n else if (!!this.options.backgroundImage) {\n const backgroundImage = yield loadImage(this.options.backgroundImage);\n if (this.options.autoColor) {\n const avgRGB = AwesomeQR._getAverageRGB(backgroundImage);\n this.options.colorDark = `rgb(${avgRGB.r},${avgRGB.g},${avgRGB.b})`;\n }\n backgroundCanvasContext.drawImage(backgroundImage, 0, 0, backgroundImage.width, backgroundImage.height, 0, 0, size, size);\n backgroundCanvasContext.rect(0, 0, size, size);\n backgroundCanvasContext.fillStyle = backgroundDimming;\n backgroundCanvasContext.fill();\n }\n else {\n backgroundCanvasContext.rect(0, 0, size, size);\n backgroundCanvasContext.fillStyle = this.options.colorLight;\n backgroundCanvasContext.fill();\n }\n const alignmentPatternCenters = QRUtil.getPatternPosition(this.qrCode.typeNumber);\n const dataScale = ((_c = (_b = this.options.components) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.scale) || defaultScale;\n const dataXyOffset = (1 - dataScale) * 0.5;\n for (let row = 0; row < nCount; row++) {\n for (let col = 0; col < nCount; col++) {\n const bIsDark = this.qrCode.isDark(row, col);\n const isBlkPosCtr = (col < 8 && (row < 8 || row >= nCount - 8)) || (col >= nCount - 8 && row < 8);\n const isTiming = (row == 6 && col >= 8 && col <= nCount - 8) || (col == 6 && row >= 8 && row <= nCount - 8);\n let isProtected = isBlkPosCtr || isTiming;\n for (let i = 1; i < alignmentPatternCenters.length - 1; i++) {\n isProtected =\n isProtected ||\n (row >= alignmentPatternCenters[i] - 2 &&\n row <= alignmentPatternCenters[i] + 2 &&\n col >= alignmentPatternCenters[i] - 2 &&\n col <= alignmentPatternCenters[i] + 2);\n }\n const nLeft = col * nSize + (isProtected ? 0 : dataXyOffset * nSize);\n const nTop = row * nSize + (isProtected ? 0 : dataXyOffset * nSize);\n mainCanvasContext.strokeStyle = bIsDark ? this.options.colorDark : this.options.colorLight;\n mainCanvasContext.lineWidth = 0.5;\n mainCanvasContext.fillStyle = bIsDark ? this.options.colorDark : this.options.colorLight;\n if (alignmentPatternCenters.length === 0) {\n if (!isProtected) {\n mainCanvasContext.fillRect(nLeft, nTop, (isProtected ? (isBlkPosCtr ? 1 : 1) : dataScale) * nSize, (isProtected ? (isBlkPosCtr ? 1 : 1) : dataScale) * nSize);\n }\n }\n else {\n const inAgnRange = col < nCount - 4 && col >= nCount - 4 - 5 && row < nCount - 4 && row >= nCount - 4 - 5;\n if (!isProtected && !inAgnRange) {\n // if align pattern list is empty, then it means that we don't need to leave room for the align patterns\n mainCanvasContext.fillRect(nLeft, nTop, (isProtected ? (isBlkPosCtr ? 1 : 1) : dataScale) * nSize, (isProtected ? (isBlkPosCtr ? 1 : 1) : dataScale) * nSize);\n }\n }\n }\n }\n const cornerAlignmentCenter = alignmentPatternCenters[alignmentPatternCenters.length - 1];\n // - PROTECTORS\n const protectorStyle = this.options.colorLight;\n // - FINDER PROTECTORS\n mainCanvasContext.fillStyle = protectorStyle;\n mainCanvasContext.fillRect(0, 0, 8 * nSize, 8 * nSize);\n mainCanvasContext.fillRect(0, (nCount - 8) * nSize, 8 * nSize, 8 * nSize);\n mainCanvasContext.fillRect((nCount - 8) * nSize, 0, 8 * nSize, 8 * nSize);\n // - TIMING PROTECTORS\n if ((_e = (_d = this.options.components) === null || _d === void 0 ? void 0 : _d.timing) === null || _e === void 0 ? void 0 : _e.protectors) {\n mainCanvasContext.fillRect(8 * nSize, 6 * nSize, (nCount - 8 - 8) * nSize, nSize);\n mainCanvasContext.fillRect(6 * nSize, 8 * nSize, nSize, (nCount - 8 - 8) * nSize);\n }\n // - CORNER ALIGNMENT PROTECTORS\n if ((_g = (_f = this.options.components) === null || _f === void 0 ? void 0 : _f.cornerAlignment) === null || _g === void 0 ? void 0 : _g.protectors) {\n AwesomeQR._drawAlignProtector(mainCanvasContext, cornerAlignmentCenter, cornerAlignmentCenter, nSize);\n }\n // - ALIGNMENT PROTECTORS\n if ((_j = (_h = this.options.components) === null || _h === void 0 ? void 0 : _h.alignment) === null || _j === void 0 ? void 0 : _j.protectors) {\n for (let i = 0; i < alignmentPatternCenters.length; i++) {\n for (let j = 0; j < alignmentPatternCenters.length; j++) {\n const agnX = alignmentPatternCenters[j];\n const agnY = alignmentPatternCenters[i];\n if (agnX === 6 && (agnY === 6 || agnY === cornerAlignmentCenter)) {\n continue;\n }\n else if (agnY === 6 && (agnX === 6 || agnX === cornerAlignmentCenter)) {\n continue;\n }\n else if (agnX === cornerAlignmentCenter && agnY === cornerAlignmentCenter) {\n continue;\n }\n else {\n AwesomeQR._drawAlignProtector(mainCanvasContext, agnX, agnY, nSize);\n }\n }\n }\n }\n // - FINDER\n mainCanvasContext.fillStyle = this.options.colorDark;\n mainCanvasContext.fillRect(0, 0, 7 * nSize, nSize);\n mainCanvasContext.fillRect((nCount - 7) * nSize, 0, 7 * nSize, nSize);\n mainCanvasContext.fillRect(0, 6 * nSize, 7 * nSize, nSize);\n mainCanvasContext.fillRect((nCount - 7) * nSize, 6 * nSize, 7 * nSize, nSize);\n mainCanvasContext.fillRect(0, (nCount - 7) * nSize, 7 * nSize, nSize);\n mainCanvasContext.fillRect(0, (nCount - 7 + 6) * nSize, 7 * nSize, nSize);\n mainCanvasContext.fillRect(0, 0, nSize, 7 * nSize);\n mainCanvasContext.fillRect(6 * nSize, 0, nSize, 7 * nSize);\n mainCanvasContext.fillRect((nCount - 7) * nSize, 0, nSize, 7 * nSize);\n mainCanvasContext.fillRect((nCount - 7 + 6) * nSize, 0, nSize, 7 * nSize);\n mainCanvasContext.fillRect(0, (nCount - 7) * nSize, nSize, 7 * nSize);\n mainCanvasContext.fillRect(6 * nSize, (nCount - 7) * nSize, nSize, 7 * nSize);\n mainCanvasContext.fillRect(2 * nSize, 2 * nSize, 3 * nSize, 3 * nSize);\n mainCanvasContext.fillRect((nCount - 7 + 2) * nSize, 2 * nSize, 3 * nSize, 3 * nSize);\n mainCanvasContext.fillRect(2 * nSize, (nCount - 7 + 2) * nSize, 3 * nSize, 3 * nSize);\n // - TIMING\n const timingScale = ((_l = (_k = this.options.components) === null || _k === void 0 ? void 0 : _k.timing) === null || _l === void 0 ? void 0 : _l.scale) || defaultScale;\n const timingXyOffset = (1 - timingScale) * 0.5;\n for (let i = 0; i < nCount - 8; i += 2) {\n AwesomeQR._drawDot(mainCanvasContext, 8 + i, 6, nSize, timingXyOffset, timingScale);\n AwesomeQR._drawDot(mainCanvasContext, 6, 8 + i, nSize, timingXyOffset, timingScale);\n }\n // - CORNER ALIGNMENT PROTECTORS\n const cornerAlignmentScale = ((_o = (_m = this.options.components) === null || _m === void 0 ? void 0 : _m.cornerAlignment) === null || _o === void 0 ? void 0 : _o.scale) || defaultScale;\n const cornerAlignmentXyOffset = (1 - cornerAlignmentScale) * 0.5;\n AwesomeQR._drawAlign(mainCanvasContext, cornerAlignmentCenter, cornerAlignmentCenter, nSize, cornerAlignmentXyOffset, cornerAlignmentScale, this.options.colorDark, ((_q = (_p = this.options.components) === null || _p === void 0 ? void 0 : _p.cornerAlignment) === null || _q === void 0 ? void 0 : _q.protectors) || false);\n // - ALIGNEMNT\n const alignmentScale = ((_s = (_r = this.options.components) === null || _r === void 0 ? void 0 : _r.alignment) === null || _s === void 0 ? void 0 : _s.scale) || defaultScale;\n const alignmentXyOffset = (1 - alignmentScale) * 0.5;\n for (let i = 0; i < alignmentPatternCenters.length; i++) {\n for (let j = 0; j < alignmentPatternCenters.length; j++) {\n const agnX = alignmentPatternCenters[j];\n const agnY = alignmentPatternCenters[i];\n if (agnX === 6 && (agnY === 6 || agnY === cornerAlignmentCenter)) {\n continue;\n }\n else if (agnY === 6 && (agnX === 6 || agnX === cornerAlignmentCenter)) {\n continue;\n }\n else if (agnX === cornerAlignmentCenter && agnY === cornerAlignmentCenter) {\n continue;\n }\n else {\n AwesomeQR._drawAlign(mainCanvasContext, agnX, agnY, nSize, alignmentXyOffset, alignmentScale, this.options.colorDark, ((_u = (_t = this.options.components) === null || _t === void 0 ? void 0 : _t.alignment) === null || _u === void 0 ? void 0 : _u.protectors) || false);\n }\n }\n }\n // Fill the margin\n if (whiteMargin) {\n mainCanvasContext.fillStyle = this.options.backgroundColor;\n mainCanvasContext.fillRect(-margin, -margin, size, margin);\n mainCanvasContext.fillRect(-margin, viewportSize, size, margin);\n mainCanvasContext.fillRect(viewportSize, -margin, margin, size);\n mainCanvasContext.fillRect(-margin, -margin, margin, size);\n }\n if (!!this.options.logoImage) {\n const logoImage = yield loadImage(this.options.logoImage);\n let logoScale = this.options.logoScale;\n let logoMargin = this.options.logoMargin;\n let logoCornerRadius = this.options.logoCornerRadius;\n if (logoScale <= 0 || logoScale >= 1.0) {\n logoScale = 0.2;\n }\n if (logoMargin < 0) {\n logoMargin = 0;\n }\n if (logoCornerRadius < 0) {\n logoCornerRadius = 0;\n }\n const logoSize = viewportSize * logoScale;\n const x = 0.5 * (size - logoSize);\n const y = x;\n // Restore the canvas\n // After restoring, the top and left margins should be taken into account\n mainCanvasContext.restore();\n // Clean the area that the logo covers (including margins)\n mainCanvasContext.fillStyle = this.options.logoBackgroundColor;\n mainCanvasContext.save();\n AwesomeQR._prepareRoundedCornerClip(mainCanvasContext, x - logoMargin, y - logoMargin, logoSize + 2 * logoMargin, logoSize + 2 * logoMargin, logoCornerRadius + logoMargin);\n mainCanvasContext.clip();\n const oldGlobalCompositeOperation = mainCanvasContext.globalCompositeOperation;\n mainCanvasContext.globalCompositeOperation = \"destination-out\";\n mainCanvasContext.fill();\n mainCanvasContext.globalCompositeOperation = oldGlobalCompositeOperation;\n mainCanvasContext.restore();\n // Draw logo image\n mainCanvasContext.save();\n AwesomeQR._prepareRoundedCornerClip(mainCanvasContext, x, y, logoSize, logoSize, logoCornerRadius);\n mainCanvasContext.clip();\n mainCanvasContext.drawImage(logoImage, x, y, logoSize, logoSize);\n mainCanvasContext.restore();\n // Re-translate the canvas to translate the top and left margins into invisible area\n mainCanvasContext.save();\n mainCanvasContext.translate(margin, margin);\n }\n if (!!parsedGIFBackground) {\n let gifOutput;\n // Reuse in order to apply the patch\n let backgroundCanvas;\n let backgroundCanvasContext;\n let patchCanvas;\n let patchCanvasContext;\n let patchData;\n gifFrames.forEach(function (frame) {\n if (!gifOutput) {\n gifOutput = new GIFEncoder(rawSize, rawSize);\n gifOutput.setDelay(frame.delay);\n gifOutput.setRepeat(0);\n }\n const { width, height } = frame.dims;\n if (!backgroundCanvas) {\n backgroundCanvas = createCanvas(width, height);\n backgroundCanvasContext = backgroundCanvas.getContext(\"2d\");\n backgroundCanvasContext.rect(0, 0, backgroundCanvas.width, backgroundCanvas.height);\n backgroundCanvasContext.fillStyle = \"#ffffff\";\n backgroundCanvasContext.fill();\n }\n if (!patchCanvas || !patchData || width !== patchCanvas.width || height !== patchCanvas.height) {\n patchCanvas = createCanvas(width, height);\n patchCanvasContext = patchCanvas.getContext(\"2d\");\n patchData = patchCanvasContext.createImageData(width, height);\n }\n patchData.data.set(frame.patch);\n patchCanvasContext.putImageData(patchData, 0, 0);\n backgroundCanvasContext.drawImage(patchCanvas, frame.dims.left, frame.dims.top);\n const unscaledCanvas = createCanvas(size, size);\n const unscaledCanvasContext = unscaledCanvas.getContext(\"2d\");\n unscaledCanvasContext.drawImage(backgroundCanvas, 0, 0, size, size);\n unscaledCanvasContext.rect(0, 0, size, size);\n unscaledCanvasContext.fillStyle = backgroundDimming;\n unscaledCanvasContext.fill();\n unscaledCanvasContext.drawImage(mainCanvas, 0, 0, size, size);\n // Scale the final image\n const outCanvas = createCanvas(rawSize, rawSize);\n const outCanvasContext = outCanvas.getContext(\"2d\");\n outCanvasContext.drawImage(unscaledCanvas, 0, 0, rawSize, rawSize);\n gifOutput.addFrame(outCanvasContext.getImageData(0, 0, outCanvas.width, outCanvas.height).data);\n });\n if (!gifOutput) {\n throw new Error(\"No frames.\");\n }\n gifOutput.finish();\n if (isElement(this.canvas)) {\n const u8array = gifOutput.stream().toFlattenUint8Array();\n const binary = u8array.reduce((bin, u8) => bin + String.fromCharCode(u8), \"\");\n return Promise.resolve(`data:image/gif;base64,${window.btoa(binary)}`);\n }\n return Promise.resolve(Buffer.from(gifOutput.stream().toFlattenUint8Array()));\n }\n else {\n // Swap and merge the foreground and the background\n backgroundCanvasContext.drawImage(mainCanvas, 0, 0, size, size);\n mainCanvasContext.drawImage(backgroundCanvas, -margin, -margin, size, size);\n // Scale the final image\n const outCanvas = createCanvas(rawSize, rawSize); //document.createElement(\"canvas\");\n const outCanvasContext = outCanvas.getContext(\"2d\");\n outCanvasContext.drawImage(mainCanvas, 0, 0, rawSize, rawSize);\n this.canvas = outCanvas;\n if (isElement(this.canvas)) {\n return Promise.resolve(this.canvas.toDataURL());\n }\n return Promise.resolve(this.canvas.toBuffer());\n }\n });\n }\n}\nAwesomeQR.CorrectLevel = QRErrorCorrectLevel;\nAwesomeQR.defaultComponentOptions = {\n data: {\n scale: 0.4,\n },\n timing: {\n scale: 0.5,\n protectors: false,\n },\n alignment: {\n scale: 0.5,\n protectors: false,\n },\n cornerAlignment: {\n scale: 0.5,\n protectors: true,\n },\n};\nAwesomeQR.defaultOptions = {\n text: \"\",\n size: 400,\n margin: 20,\n colorDark: \"#000000\",\n colorLight: \"rgba(255, 255, 255, 0.6)\",\n correctLevel: QRErrorCorrectLevel.M,\n backgroundImage: undefined,\n backgroundDimming: \"rgba(0,0,0,0)\",\n logoImage: undefined,\n logoScale: 0.2,\n logoMargin: 4,\n logoCornerRadius: 8,\n whiteMargin: true,\n components: AwesomeQR.defaultComponentOptions,\n autoColor: true,\n logoBackgroundColor: '#ffffff',\n backgroundColor: '#ffffff',\n};\nfunction isElement(obj) {\n try {\n //Using W3 DOM2 (works for FF, Opera and Chrome)\n return obj instanceof HTMLElement;\n }\n catch (e) {\n //Browsers not supporting W3 DOM2 don't have HTMLElement and\n //an exception is thrown and we end up here. Testing some\n //properties that all elements have (works on IE7)\n return (typeof obj === \"object\" &&\n obj.nodeType === 1 &&\n typeof obj.style === \"object\" &&\n typeof obj.ownerDocument === \"object\");\n }\n}\n","import { IdType } from 'lib/types/base-types'\nimport { Currency } from 'lib/types/currency'\n\nexport enum FreemiumPosition {\n LEFT_TOP_CORNER = 'top-left',\n LEFT_BOTTOM_CORNER = 'bottom-left',\n RIGHT_TOP_CORNER = 'top-right',\n RIGHT_BOTTOM_CORNER = 'bottom-right',\n DISABLED = 'disabled',\n}\n\nexport interface IFreemiumGoal {\n id: IdType\n title: string\n description: string\n currency: Currency\n value: number\n total: number\n status: boolean\n publicTotal: boolean\n position: FreemiumPosition\n}\n\nexport interface IFreemiumGoalModel {\n title: string\n description: string\n startValue: number\n totalValue: number\n publicTotal: boolean\n}\n\nexport interface IFreemiumPoll {\n id: IdType\n question: string\n duration: number\n remainder_duration: number\n votes_total: number\n answers: string[]\n position: FreemiumPosition\n end_condition: 'duration' | 'votes'\n max_votes: number\n}\n\nexport interface IFreemiumPollModel {\n question: string\n answers: Array\n duration: number\n end_condition: 'duration' | 'votes'\n max_votes: number\n}\n\nexport interface IFreemiumSupport {\n duration: number\n position: FreemiumPosition\n}\n\nexport interface IFreemiumChat {\n enabled: boolean\n}\n\nexport interface IFreemiumSetup {\n goal: IFreemiumGoal\n default_goal: {\n id: IdType\n }\n poll: IFreemiumPoll\n support: IFreemiumSupport\n income: {\n month: number\n total: number\n }\n chat: IFreemiumChat\n chat_message_frequency: number\n}\n\nexport type IFreemiumGoalCard = 'progress' | 'topSupportersDay' | 'topSupportersAll' | 'qr'\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _ = require(\"../\");\n\nvar _uint = require(\"../parsers/uint8\");\n\n// a set of 0x00 terminated subblocks\nvar subBlocksSchema = {\n blocks: function blocks(stream) {\n var terminator = 0x00;\n var chunks = [];\n var streamSize = stream.data.length;\n var total = 0;\n\n for (var size = (0, _uint.readByte)()(stream); size !== terminator; size = (0, _uint.readByte)()(stream)) {\n // size becomes undefined for some case when file is corrupted and terminator is not proper \n // null check to avoid recursion\n if (!size) break; // catch corrupted files with no terminator\n\n if (stream.pos + size >= streamSize) {\n var availableSize = streamSize - stream.pos;\n chunks.push((0, _uint.readBytes)(availableSize)(stream));\n total += availableSize;\n break;\n }\n\n chunks.push((0, _uint.readBytes)(size)(stream));\n total += size;\n }\n\n var result = new Uint8Array(total);\n var offset = 0;\n\n for (var i = 0; i < chunks.length; i++) {\n result.set(chunks[i], offset);\n offset += chunks[i].length;\n }\n\n return result;\n }\n}; // global control extension\n\nvar gceSchema = (0, _.conditional)({\n gce: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n byteSize: (0, _uint.readByte)()\n }, {\n extras: (0, _uint.readBits)({\n future: {\n index: 0,\n length: 3\n },\n disposal: {\n index: 3,\n length: 3\n },\n userInput: {\n index: 6\n },\n transparentColorGiven: {\n index: 7\n }\n })\n }, {\n delay: (0, _uint.readUnsigned)(true)\n }, {\n transparentColorIndex: (0, _uint.readByte)()\n }, {\n terminator: (0, _uint.readByte)()\n }]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xf9;\n}); // image pipeline block\n\nvar imageSchema = (0, _.conditional)({\n image: [{\n code: (0, _uint.readByte)()\n }, {\n descriptor: [{\n left: (0, _uint.readUnsigned)(true)\n }, {\n top: (0, _uint.readUnsigned)(true)\n }, {\n width: (0, _uint.readUnsigned)(true)\n }, {\n height: (0, _uint.readUnsigned)(true)\n }, {\n lct: (0, _uint.readBits)({\n exists: {\n index: 0\n },\n interlaced: {\n index: 1\n },\n sort: {\n index: 2\n },\n future: {\n index: 3,\n length: 2\n },\n size: {\n index: 5,\n length: 3\n }\n })\n }]\n }, (0, _.conditional)({\n lct: (0, _uint.readArray)(3, function (stream, result, parent) {\n return Math.pow(2, parent.descriptor.lct.size + 1);\n })\n }, function (stream, result, parent) {\n return parent.descriptor.lct.exists;\n }), {\n data: [{\n minCodeSize: (0, _uint.readByte)()\n }, subBlocksSchema]\n }]\n}, function (stream) {\n return (0, _uint.peekByte)()(stream) === 0x2c;\n}); // plain text block\n\nvar textSchema = (0, _.conditional)({\n text: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n blockSize: (0, _uint.readByte)()\n }, {\n preData: function preData(stream, result, parent) {\n return (0, _uint.readBytes)(parent.text.blockSize)(stream);\n }\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0x01;\n}); // application block\n\nvar applicationSchema = (0, _.conditional)({\n application: [{\n codes: (0, _uint.readBytes)(2)\n }, {\n blockSize: (0, _uint.readByte)()\n }, {\n id: function id(stream, result, parent) {\n return (0, _uint.readString)(parent.blockSize)(stream);\n }\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xff;\n}); // comment block\n\nvar commentSchema = (0, _.conditional)({\n comment: [{\n codes: (0, _uint.readBytes)(2)\n }, subBlocksSchema]\n}, function (stream) {\n var codes = (0, _uint.peekBytes)(2)(stream);\n return codes[0] === 0x21 && codes[1] === 0xfe;\n});\nvar schema = [{\n header: [{\n signature: (0, _uint.readString)(3)\n }, {\n version: (0, _uint.readString)(3)\n }]\n}, {\n lsd: [{\n width: (0, _uint.readUnsigned)(true)\n }, {\n height: (0, _uint.readUnsigned)(true)\n }, {\n gct: (0, _uint.readBits)({\n exists: {\n index: 0\n },\n resolution: {\n index: 1,\n length: 3\n },\n sort: {\n index: 4\n },\n size: {\n index: 5,\n length: 3\n }\n })\n }, {\n backgroundColorIndex: (0, _uint.readByte)()\n }, {\n pixelAspectRatio: (0, _uint.readByte)()\n }]\n}, (0, _.conditional)({\n gct: (0, _uint.readArray)(3, function (stream, result) {\n return Math.pow(2, result.lsd.gct.size + 1);\n })\n}, function (stream, result) {\n return result.lsd.gct.exists;\n}), // content frames\n{\n frames: (0, _.loop)([gceSchema, applicationSchema, commentSchema, imageSchema, textSchema], function (stream) {\n var nextCode = (0, _uint.peekByte)()(stream); // rather than check for a terminator, we should check for the existence\n // of an ext or image block to avoid infinite loops\n //var terminator = 0x3B;\n //return nextCode !== terminator;\n\n return nextCode === 0x21 || nextCode === 0x2c;\n })\n}];\nvar _default = schema;\nexports[\"default\"] = _default;","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('dรฉjร  vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--13-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--1-0!../../../vue-loader/lib/index.js??vue-loader-options!./vue-qr.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--13-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--1-0!../../../vue-loader/lib/index.js??vue-loader-options!./vue-qr.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./vue-qr.vue?vue&type=template&id=477c6f15&\"\nimport script from \"./vue-qr.vue?vue&type=script&lang=js&\"\nexport * from \"./vue-qr.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { AdFormat } from 'lib/types/ad-format'\nimport { UrlType } from 'lib/types/base-types'\nimport { ICreative, IDemoCreative } from 'lib/types/creative'\nimport { computed } from 'vue'\nimport VueQr from 'vue-qr/src/packages/vue-qr.vue'\nimport { Widget } from 'Widget/class/Widget'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QrCode',\n props: {\n link: null,\n widget: null,\n creative: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n link: UrlType | null\n widget: Widget\n creative: ICreative | IDemoCreative\n}\n\n\n\nconst widget = props.widget.data\n\nconst size = Math.floor(window.innerWidth / 9.5)\n\nconst isPip = computed(() => {\n return props.creative.adSet.format === AdFormat.PIP\n})\nconst isLeaderboard = computed(() => {\n return props.creative.adSet.format === AdFormat.LEADERBOARD\n})\nconst isTopRight = computed(() => {\n return (widget.value.advertising.position === 'right_bottom_corner' && isPip.value) ||\n (widget.value.leaderboard.position === 'top' && isLeaderboard.value)\n})\nconst ctaText = computed(() => {\n return props.creative?.companion?.cta\n})\n\nreturn { __sfc: true,props, widget, size, isPip, isLeaderboard, isTopRight, ctaText, VueQr }\n}\n\n})","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QrCode.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QrCode.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./QrCode.vue?vue&type=template&id=3915f34a&scoped=true&\"\nimport script from \"./QrCode.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./QrCode.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./QrCode.vue?vue&type=style&index=0&id=3915f34a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3915f34a\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\nimport { Widget } from 'Widget/class/Widget'\n\nimport { AdFormat } from 'lib/types/ad-format'\nimport { ICreative, IDemoCreative } from 'lib/types/creative'\n\nimport AdvertState from 'components/creatives/components/AdvertState.vue'\nimport Loader from 'components/creatives/components/Loader.vue'\nimport QrCode from 'components/creatives/components/QrCode.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Wrapper',\n props: {\n widget: null,\n creative: null,\n isUpdating: { type: Boolean },\n countCreatives: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n widget: Widget\n creative: ICreative | IDemoCreative | null\n isUpdating: boolean\n countCreatives?: number\n}\n\n\n\nconst blacked = computed(() => {\n return props.creative?.adSet.format === AdFormat.FULLSCREEN &&\n !props.creative.attachments.video?.path.includes('.webm') &&\n props.countCreatives &&\n props.countCreatives > 1\n})\n\nconst isCompleted = computed(() => {\n const currentIdx = props.widget.creativesManager.currentCreativeIndex.value + 1\n const mediaCreatives = props.widget.creativesManager.adSet.value.filter(ad => ![AdFormat.YANDEX_TEXT, AdFormat.CHATBOT_TEXT].includes(ad.adSet.format)).length\n\n return currentIdx > mediaCreatives\n})\n\nreturn { __sfc: true,props, blacked, isCompleted, AdvertState, Loader, QrCode }\n}\n\n})","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Wrapper.vue?vue&type=template&id=20213902&scoped=true&\"\nimport script from \"./Wrapper.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Wrapper.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Wrapper.vue?vue&type=style&index=0&id=20213902&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20213902\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"wrapRef\",staticClass:\"yandex\"},[_c('div',{staticClass:\"yandex__video\",class:{\n 'yandex__video_pip': _setup.isPip,\n 'yandex__video_left': _setup.isPip && _setup.isLeftTop,\n 'yandex__video_right-bottom': _setup.isPip && _setup.isRightBottom }},[_c('video',{ref:\"video\",staticClass:\"video-js\",attrs:{\"id\":\"video-js-player\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { onBeforeUnmount, onMounted, ref } from 'vue'\n\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ICreative, IDemoCreative } from 'lib/types/creative'\nimport { ErrorMessage } from 'lib/types/error-message'\nimport { AdvertisingPosition, IWidget } from 'lib/types/widget'\n\nimport { useInterval } from 'components/creatives/utils/use-interval'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'YandexFS',\n props: {\n creative: null,\n widget: null\n },\n emits: [\"start-time\", \"end-time\", \"update-current-time\"],\n setup(__props: any, { emit }: { emit: ({\n (e: 'start-time'): void\n (e: 'end-time'): void\n (e: 'update-current-time', value: number): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as {\n creative: ICreative | IDemoCreative\n widget: IWidget\n}\n\n\n\n\n\nconst wrapRef = ref(null)\n\n// eslint-disable-next-line no-undef\nconst timeout = ref(null)\n\nconst player = ref()\nconst isPip = ref(true)\nconst isLeftTop = props.widget.advertising.position === AdvertisingPosition.LEFT_TOP_CORNER\nconst isRightBottom = props.widget.advertising.position === AdvertisingPosition.RIGHT_BOTTOM_CORNER\nconst path = props.creative?.attachments?.video?.path\nconst metacount = props.creative?.attachments?.video?.extend?.metacount\nconst rtbcount = props.creative?.attachments?.video?.extend?.rtbcount\nconst pixelImpressions = props.creative?.attachments?.video?.extend?.pixel_impressions\nconst isXml = path?.includes('.xml')\n\nconst callPixel = (id: string, src: string) => {\n try {\n const oldPixel = document.getElementById(id)\n if (oldPixel) oldPixel.remove()\n\n const url = new URL(src)\n\n const img = document.createElement('img')\n img.id = id\n img.width = 1\n img.height = 1\n img.src = url.href\n wrapRef.value?.appendChild(img)\n }\n catch (err) {\n Logger.error(`Error adding pixel: ${src}` as ErrorMessage, false)\n }\n}\n\nconst endTime = () => {\n if (timeout.value) {\n clearTimeout(timeout.value)\n }\n emit('end-time')\n}\n\nif (!isXml) {\n endTime()\n Logger.warning('File is not XML in YandexFS creative', false, { path })\n}\n\nonMounted(() => {\n const video = document.getElementById('video-js-player') as HTMLVideoElement\n\n if (video) {\n const { startInterval } = useInterval(\n video,\n emit,\n )\n startInterval()\n\n player.value = window.videojs(video)\n\n const vastAd = player.value.vastClient({\n adTagUrl: path,\n autoResize: false,\n playAdAlways: true,\n adCancelTimeout: 60000,\n })\n\n timeout.value = setTimeout(endTime, 1000 * 15.5)\n\n const isPlaying = !player.value.paused() && !player.value.ended()\n\n if (!isPlaying) {\n player.value.play()\n }\n\n emit('start-time')\n\n if (metacount) {\n callPixel('metacount', metacount)\n }\n\n if (rtbcount) {\n setTimeout(() => callPixel('rtbcount', rtbcount), 2000)\n }\n\n if (pixelImpressions) {\n for (let i = 0; i < pixelImpressions.length; i++) {\n const pixel = pixelImpressions[i]\n callPixel('pixel-impression-' + i, pixel)\n }\n }\n\n player.value.on('vast.adError', endTime)\n\n player.value.on('vast.adsCancel', endTime)\n\n player.value.on('vast.contentEnd', endTime)\n\n player.value.on('vast.adEnd', endTime)\n\n player.value.on('reset', () => {\n const adsEnabled = player.value.options().plugins['ads-setup'].adsEnabled\n\n if (adsEnabled) {\n vastAd.enable()\n }\n else {\n vastAd.disable()\n }\n })\n }\n else {\n Logger.warning('Not found video element on page in YandexFS creative', false)\n }\n})\n\nonBeforeUnmount(() => {\n if (player.value) {\n player.value.dispose()\n }\n})\n\nreturn { __sfc: true,props, emit, wrapRef, timeout, player, isPip, isLeftTop, isRightBottom, path, metacount, rtbcount, pixelImpressions, isXml, callPixel, endTime }\n}\n\n})","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YandexFS.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YandexFS.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./YandexFS.vue?vue&type=template&id=bdd1e15c&scoped=true&\"\nimport script from \"./YandexFS.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./YandexFS.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./YandexFS.vue?vue&type=style&index=0&id=bdd1e15c&prod&lang=scss&\"\nimport style1 from \"./YandexFS.vue?vue&type=style&index=1&id=bdd1e15c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bdd1e15c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"wrapRef\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { onMounted, ref } from 'vue'\n\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ICreative, IDemoCreative } from 'lib/types/creative'\nimport { ErrorMessage } from 'lib/types/error-message'\nimport { IWidget } from 'lib/types/widget'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'YandexText',\n props: {\n creative: null,\n widget: null\n },\n emits: [\"start-time\", \"end-time\", \"update-current-time\"],\n setup(__props: any, { emit }: { emit: ({\n (e: 'start-time'): void\n (e: 'end-time'): void\n (e: 'update-current-time', value: number): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as {\n creative: ICreative | IDemoCreative\n widget: IWidget\n}\n\n\n\n\n\nconst wrapRef = ref(null)\n\nconst metacount = props.creative?.attachments?.unit?.extend?.metacount\nconst rtbcount = props.creative?.attachments?.unit?.extend?.rtbcount\nconst pixelImpressions = props.creative?.attachments?.unit?.extend?.pixel_impressions\n\nconst callPixel = (id: string, src: string) => {\n try {\n const oldPixel = document.getElementById(id)\n if (oldPixel) oldPixel.remove()\n\n const url = new URL(src)\n\n const img = document.createElement('img')\n img.id = id\n img.width = 1\n img.height = 1\n img.src = url.href\n wrapRef.value?.appendChild(img)\n }\n catch (err) {\n Logger.error(`Error adding pixel: ${src}` as ErrorMessage, false)\n }\n}\n\nonMounted(() => {\n if (metacount) {\n callPixel('metacount', metacount)\n }\n\n if (rtbcount) {\n setTimeout(() => callPixel('rtbcount', rtbcount), 2000)\n }\n\n if (pixelImpressions) {\n for (let i = 0; i < pixelImpressions.length; i++) {\n const pixel = pixelImpressions[i]\n callPixel('pixel-impression-' + i, pixel)\n }\n }\n\n Logger.debug('Yandex Text mounted')\n\n setTimeout(() => {\n Logger.debug('Yandex Text timeout')\n emit('end-time')\n }, 3000)\n})\n\nreturn { __sfc: true,props, emit, wrapRef, metacount, rtbcount, pixelImpressions, callPixel }\n}\n\n})","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YandexText.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YandexText.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./YandexText.vue?vue&type=template&id=377f9734&\"\nimport script from \"./YandexText.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./YandexText.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"wrapRef\",staticClass:\"creative\"},[_c('div',{staticClass:\"creative__iframe\"},[_c('iframe',{ref:\"iframe\",attrs:{\"id\":\"custom\",\"src\":_setup.path,\"frameborder\":\"0\",\"scrolling\":\"no\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { onMounted, ref } from 'vue'\n\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ICreative, IDemoCreative } from 'lib/types/creative'\nimport { IWidget } from 'lib/types/widget'\n\nimport { usePixels } from './utils/use-pixels'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Custom',\n props: {\n creative: null,\n widget: null\n },\n emits: [\"start-time\", \"end-time\", \"update-current-time\"],\n setup(__props: any, { emit }: { emit: ({\n (e: 'start-time'): void\n (e: 'end-time'): void\n (e: 'update-current-time', value: number): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as {\n creative: ICreative\n widget: IWidget\n}\n\n\n\n\n\nconst wrapRef = ref(null)\n\nconst { formatPixels, callImpressionPixels } = usePixels()\n\nconst path = props.creative.attachments.zip?.path\nconst pixelImpressions = formatPixels(props.creative?.pixels.impressions || [], props.creative)\n\nif (!path) {\n Logger.warning('Not found path in custom creative', false, { path })\n}\n\nonMounted(() => {\n const frame = document.getElementById('custom') as HTMLIFrameElement\n\n if (!frame) return\n\n emit('start-time')\n\n callImpressionPixels(pixelImpressions, wrapRef)\n\n setTimeout(() => {\n frame.contentWindow?.postMessage({\n call: 'sendValue',\n data: {\n username: props.widget[props.widget.platform]?.nickname || props.widget?.streamer?.name,\n signedUp: props.widget?.streamer?.signed_up,\n lang: props.widget?.streamer?.language,\n title: props.creative?.stream?.title,\n },\n }, '*')\n }, 800)\n})\n\nreturn { __sfc: true,props, emit, wrapRef, formatPixels, callImpressionPixels, path, pixelImpressions }\n}\n\n})","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Custom.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Custom.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Custom.vue?vue&type=template&id=59955cb0&scoped=true&\"\nimport script from \"./Custom.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Custom.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Custom.vue?vue&type=style&index=0&id=59955cb0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59955cb0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"wrapRef\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { onMounted, ref } from 'vue'\n\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ICreative, IDemoCreative } from 'lib/types/creative'\nimport { ErrorMessage } from 'lib/types/error-message'\nimport { IWidget } from 'lib/types/widget'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChatbotText',\n props: {\n creative: null,\n widget: null\n },\n emits: [\"start-time\", \"end-time\", \"update-current-time\"],\n setup(__props: any, { emit }: { emit: ({\n (e: 'start-time'): void\n (e: 'end-time'): void\n (e: 'update-current-time', value: number): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as {\n creative: ICreative | IDemoCreative\n widget: IWidget\n}\n\n\n\n\n\nconst wrapRef = ref(null)\n\nonMounted(() => {\n Logger.debug('Chatbot Text mounted')\n\n setTimeout(() => {\n Logger.debug('Chatbot Text timeout')\n emit('end-time')\n }, 3000)\n})\n\nreturn { __sfc: true,props, emit, wrapRef }\n}\n\n})","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatbotText.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatbotText.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ChatbotText.vue?vue&type=template&id=a3db5bbc&\"\nimport script from \"./ChatbotText.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ChatbotText.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"creative\"},[_c('div',{staticClass:\"creative__iframe\"},[(_setup.scriptCode)?_c('iframe',{staticStyle:{\"width\":\"1024px\",\"height\":\"768px\"},attrs:{\"src\":_setup.scriptCode}}):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { onMounted, onUnmounted, ref } from 'vue'\n\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ICreative, IDemoCreative } from 'lib/types/creative'\nimport { ErrorMessage } from 'lib/types/error-message'\nimport { AdvertisingPosition, IWidget } from 'lib/types/widget'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GoogleAdManager',\n props: {\n creative: null,\n widget: null\n },\n emits: [\"start-time\", \"end-time\", \"update-current-time\"],\n setup(__props: any, { emit }: { emit: ({\n (e: 'start-time'): void\n (e: 'end-time'): void\n (e: 'update-current-time', value: number): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as {\n creative: ICreative | IDemoCreative\n widget: IWidget\n}\n\n\n\n\n\nconst isLeftTop = props.widget.advertising.position === AdvertisingPosition.LEFT_TOP_CORNER\nconst isRightBottom = props.widget.advertising.position === AdvertisingPosition.RIGHT_BOTTOM_CORNER\nconst scriptCode = props.creative.attachments.unit?.extend?.script_code as string\n\nconst adId = ref('div-gpt-ad-1729163884762-0')\n\nonMounted(() => {\n if (!scriptCode) {\n Logger.warning('There is no script code', false)\n emit('end-time')\n }\n\n // const script = document.createElement('script')\n // script.src = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js'\n // script.async = true\n // document.head.appendChild(script)\n\n // script.onload = () => {\n // window.googletag = window.googletag || { cmd: [] }\n // googletag.cmd.push(function () {\n // try {\n // const formattedCode = scriptCode.replace('STREAMER_PROVIDER_ID', props.widget.streamer?.user_id.toString() || '')\n\n // // eslint-disable-next-line no-eval\n // eval(formattedCode)\n // }\n // catch (err) {\n // Logger.error(ErrorMessage.WIDGET_ADMNGR_SCRIPT_ERROR, false, err)\n // emit('end-time')\n // }\n // })\n // }\n})\n\n// onUnmounted(() => {\n// if (window.googletag && googletag.pubads) {\n// const slot = googletag.pubads().getSlots().find(slot => slot.getSlotElementId() === adId.value)\n// if (slot) {\n// googletag.destroySlots([slot])\n// }\n// }\n// })\n\nreturn { __sfc: true,props, emit, isLeftTop, isRightBottom, scriptCode, adId }\n}\n\n})","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleAdManager.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleAdManager.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./GoogleAdManager.vue?vue&type=template&id=04d07b65&scoped=true&\"\nimport script from \"./GoogleAdManager.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./GoogleAdManager.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./GoogleAdManager.vue?vue&type=style&index=0&id=04d07b65&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"04d07b65\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\nimport { Widget } from 'Widget/class/Widget'\n\nimport { AdFormat } from 'lib/types/ad-format'\n\nimport {\n ChatbotText,\n Custom,\n Fullscreen,\n Leaderboard,\n Pip,\n Wrapper,\n YandexFS,\n YandexText,\n} from 'components/creatives'\nimport GoogleAdManager from 'components/creatives/GoogleAdManager.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Creatives',\n props: {\n widget: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n widget: Widget\n}\n\n\nconst creativesManager = props.widget.creativesManager\n\nconst component = computed(() => {\n switch (creativesManager.creative?.value?.adSet?.format) {\n case AdFormat.LEADERBOARD:\n return Leaderboard\n case AdFormat.FULLSCREEN:\n return Fullscreen\n case AdFormat.PIP:\n return Pip\n case AdFormat.CUSTOM:\n return Custom\n case AdFormat.YANDEX_FS:\n case AdFormat.YANDEX_PF:\n return YandexFS\n case AdFormat.YANDEX_TEXT:\n return YandexText\n case AdFormat.CHATBOT_TEXT:\n return ChatbotText\n case AdFormat.ADMNGR:\n return GoogleAdManager\n }\n})\n\nconst onTimerStart = () => {\n // setTimeout(() => {\n // if (!creativesManager.creative.value) return\n // props.widget.screenshot.makeScreenshot(creativesManager.creative.value)\n // }, 1000 * 8)\n}\n\nconst onUpdateCurrentTime = (time: number) => {\n creativesManager.timer.current.value += time * 1000\n}\n\nconst onTimerEnd = () => {\n creativesManager.onPlayEnd.apply(creativesManager)\n}\n\nreturn { __sfc: true,props, creativesManager, component, onTimerStart, onUpdateCurrentTime, onTimerEnd, Wrapper }\n}\n\n})","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Creatives.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Creatives.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Creatives.vue?vue&type=template&id=254c5089&scoped=true&\"\nimport script from \"./Creatives.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Creatives.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Creatives.vue?vue&type=style&index=0&id=254c5089&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"254c5089\",\n null\n \n)\n\nexport default component.exports","/* globals document, ImageData */\n\nconst parseFont = require('./lib/parse-font')\n\nexports.parseFont = parseFont\n\nexports.createCanvas = function (width, height) {\n return Object.assign(document.createElement('canvas'), { width: width, height: height })\n}\n\nexports.createImageData = function (array, width, height) {\n // Browser implementation of ImageData looks at the number of arguments passed\n switch (arguments.length) {\n case 0: return new ImageData()\n case 1: return new ImageData(array)\n case 2: return new ImageData(array, width)\n default: return new ImageData(array, width, height)\n }\n}\n\nexports.loadImage = function (src, options) {\n return new Promise(function (resolve, reject) {\n const image = Object.assign(document.createElement('img'), options)\n\n function cleanup () {\n image.onload = null\n image.onerror = null\n }\n\n image.onload = function () { cleanup(); resolve(image) }\n image.onerror = function () { cleanup(); reject(new Error('Failed to load the image \"' + src + '\"')) }\n\n image.src = src\n })\n}\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&id=b226ee34&prod&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Custom.vue?vue&type=style&index=0&id=59955cb0&prod&lang=scss&scoped=true&\"","import { Api } from 'lib/api'\nimport { IResponseData } from 'lib/types/response'\nimport { IFreemiumSetup } from 'lib/types/streamer-freemium/freemium-setup'\n\nexport const getSetup = (slug: string): Promise> => {\n return Api.get>(`freemium/widget/${slug}`, undefined, { showMessage: false })\n}\n","export enum ErrorMessage {\n WIDGET_MESSAGE_SEND = 'Error sending message to chatbot',\n WIDGET_FREEMIUM_START = 'Something went wrong starting freemium in widget',\n WIDGET_FREEMIUM_MESSAGE_SEND = 'Error sending freemium message to chatbot',\n WIDGET_BRAND_SAFETY = 'Error when checking for Brand Safety',\n WIDGET_UNDEFINED_CREATIVE = 'Undefined creative at the end of an ad impression',\n WIDGET_MAKE_SCREENSHOT = 'Error making screenshot',\n WIDGET_ADMNGR_SCRIPT_ERROR = 'Error executing script_code'\n}\n","import { Widget } from 'Widget/class/Widget'\n\nimport { Api } from 'lib/api/instance'\nimport { Logger } from 'lib/helpers/handleLog'\nimport { AdFormat } from 'lib/types/ad-format'\nimport { ICreative, IDemoCreative, IPromoCreative } from 'lib/types/creative'\nimport { ErrorMessage } from 'lib/types/error-message'\n\nexport class Chatbot {\n widget: Widget\n\n constructor (widget: Widget) {\n this.widget = widget\n }\n\n async sendMessage (creative: ICreative | IDemoCreative | IPromoCreative) {\n const delay = this.widget.data.value.stream.delay * 1000\n\n setTimeout(async () => {\n this.trySendMessage(creative)\n }, delay)\n }\n\n async trySendMessage (\n creative: ICreative | IDemoCreative | IPromoCreative,\n attempt = 1,\n ) {\n if (this.widget.pusher.subscribersCount.value > 1) return\n\n if (!creative.impressionSlug) return\n\n const url = `nightbot/${this.widget.data.value.platform}/messages/ad/${creative.impressionSlug}`\n\n const data = this.getMessageData(creative)\n\n try {\n await Api.post(\n url,\n data,\n { showMessage: false, throwOnStatusFalse: false },\n )\n Logger.debug(`Send message for: ${creative.slug}`)\n }\n catch (err) {\n if (attempt > 0) {\n setTimeout(() => {\n this.trySendMessage(creative, attempt - 1)\n }, 45 * 1000)\n }\n else {\n Logger.critical(ErrorMessage.WIDGET_MESSAGE_SEND, false, err)\n }\n }\n }\n\n private getMessageData (creative: ICreative | IDemoCreative | IPromoCreative) {\n if (\n [AdFormat.YANDEX_FS, AdFormat.YANDEX_PF].includes(creative.adSet.format) &&\n creative.attachments.video?.extend?.ssp\n ) {\n const { bid_price, chatbot_text, pixel_clicks, product_link } = creative.attachments.video.extend.ssp\n\n return {\n bid_price,\n chatbot_text,\n pixel_clicks,\n product_url: product_link,\n }\n }\n\n if (\n creative.adSet.format === AdFormat.YANDEX_TEXT &&\n creative.attachments.unit?.extend?.ssp\n ) {\n const { bid_price, chatbot_text, pixel_clicks, product_link } = creative.attachments.unit.extend.ssp\n\n return {\n bid_price,\n chatbot_text,\n pixel_clicks,\n product_url: product_link,\n }\n }\n\n return undefined\n }\n\n async sendFreemiumMessage (message: string) {\n if (this.widget.pusher.subscribersCount.value > 1) return\n\n const url = `nightbot/${this.widget.data.value.platform}/messages/freemium/${this.widget.slug}`\n\n try {\n await Api.post(url, { message }, { showMessage: false, throwOnStatusFalse: false })\n }\n catch (err) {\n Logger.critical(ErrorMessage.WIDGET_FREEMIUM_MESSAGE_SEND, false, err)\n }\n }\n}\n","import { Ref, ref } from 'vue'\n\nimport { useRootLocaleObj } from 'lib/helpers/useLocale'\nimport { FreemiumMessagesFrequency } from 'lib/types/streamer-freemium/freemium-alerts'\nimport { IFreemiumChat, IFreemiumSetup } from 'lib/types/streamer-freemium/freemium-setup'\n\nimport { Chatbot } from '../Chatbot'\n\nimport { Freemium } from '.'\n\nexport class Chat {\n private freemium: Freemium\n private chatbot: Chatbot;\n data: Ref = ref(null)\n frequency: Ref = ref(FreemiumMessagesFrequency.DISABLED)\n private messagesIntervalId: NodeJS.Timer | null = null\n private freemiumMessages = useRootLocaleObj('views.widget.freemium.chatbotMsgs') as unknown as string[]\n private lastFreemiumMessages: string[] = []\n\n constructor (freemium: Freemium) {\n this.freemium = freemium\n this.chatbot = new Chatbot(this.freemium.widget)\n }\n\n setup (data: IFreemiumSetup) {\n this.data.value = data.chat\n this.frequency.value = data.chat_message_frequency\n }\n\n init () {\n const chatIsNotActive = !this.data.value?.enabled || this.frequency.value === FreemiumMessagesFrequency.DISABLED\n\n if (!this.freemium.goal || chatIsNotActive) {\n return\n }\n\n if (this.messagesIntervalId) {\n clearInterval(this.messagesIntervalId as NodeJS.Timeout)\n }\n\n this.messagesIntervalId = setInterval(() => {\n if (window.obsstudio) {\n window.obsstudio.getStatus((status) => {\n if (!status.streaming) {\n return\n }\n this.chatbot.sendFreemiumMessage(this.getMessage())\n })\n }\n }, 1000 * 60 * this.frequency.value)\n }\n\n private getMessage () {\n const streamer = this.freemium.widget.data.value.streamer\n\n const streamerLocale = streamer?.locale === 'en' ? '' : streamer?.locale + '/'\n const link = `https://uplify.link/${streamerLocale}${streamer?.user_id}`\n const randomgIndex = Math.floor(Math.random() * this.freemiumMessages.length)\n const getRandom = () => this.freemiumMessages[randomgIndex].replace('{link}', link)\n\n if (this.lastFreemiumMessages.length >= 3) {\n this.lastFreemiumMessages = []\n }\n\n let message = getRandom()\n do {\n message = getRandom()\n } while (this.lastFreemiumMessages.includes(message))\n\n this.lastFreemiumMessages.push(message)\n return message\n }\n}\n","import { Ref, ref } from 'vue'\n\nimport { FreemiumPosition, IFreemiumGoal, IFreemiumGoalCard, IFreemiumSetup } from 'lib/types/streamer-freemium/freemium-setup'\nimport { IFreemiumWidget } from 'lib/types/streamer-freemium/freemium-widget'\n\nimport { Freemium } from '.'\n\nexport class Goal {\n freemium: Freemium\n data: Ref = ref(null)\n progress: Ref = ref(null)\n position: Ref = ref(FreemiumPosition.RIGHT_TOP_CORNER)\n currentCard: Ref = ref('progress')\n private cardIntervalId: NodeJS.Timer | null = null\n private readonly CARD_CHANGE_INTERVAL = 1000 * 15\n\n constructor (freemium: Freemium) {\n this.freemium = freemium\n }\n\n setup (data: IFreemiumSetup['goal']) {\n if (!data) return\n\n this.data.value = data\n this.position.value = data.position\n }\n\n updateProgress (progress: IFreemiumWidget['goalProgress']) {\n this.progress.value = (this.data.value?.value || 0) + progress\n }\n\n loopCards () {\n if (this.cardIntervalId) {\n clearInterval(this.cardIntervalId as NodeJS.Timeout)\n this.currentCard.value = 'progress'\n }\n\n const isNotPreview = !this.freemium.preview.isActive.value\n const INTERVAL = isNotPreview ? this.CARD_CHANGE_INTERVAL : this.freemium.preview.PREVIEW_DURATION / 3\n\n this.cardIntervalId = setInterval(() => {\n let nextCard: IFreemiumGoalCard = 'progress'\n const supporters = this.freemium.supporters.top.value\n const hasNoSupporters = !supporters.topToday.length && !supporters.top.length\n\n switch (this.currentCard.value) {\n case 'progress':\n if (hasNoSupporters && isNotPreview) {\n nextCard = 'qr'\n break\n }\n if (!supporters.topToday.length) {\n nextCard = 'topSupportersAll'\n break\n }\n nextCard = 'topSupportersDay'\n break\n\n case 'topSupportersDay':\n if (!supporters.top.length) {\n nextCard = 'qr'\n break\n }\n nextCard = 'topSupportersAll'\n break\n\n case 'topSupportersAll':\n nextCard = 'qr'\n break\n\n case 'qr':\n nextCard = 'progress'\n break\n }\n\n this.currentCard.value = nextCard\n }, INTERVAL)\n }\n}\n","import { FreemiumPosition, IFreemiumPoll, IFreemiumSetup } from 'lib/types/streamer-freemium/freemium-setup'\nimport { IFreemiumWidget } from 'lib/types/streamer-freemium/freemium-widget'\nimport { Ref, ref } from 'vue'\n\nimport { Freemium } from '.'\n\nexport class Poll {\n freemium: Freemium\n data: Ref = ref(null)\n results: Ref = ref(null)\n position: Ref = ref(FreemiumPosition.RIGHT_BOTTOM_CORNER)\n private cardIntervalId: NodeJS.Timer | null = null\n\n constructor (freemium: Freemium) {\n this.freemium = freemium\n }\n\n setup (data: IFreemiumSetup['poll']) {\n if (!data) return\n\n this.data.value = data\n this.position.value = data.position\n }\n\n updateResults (results: IFreemiumWidget['pollResults']) {\n this.results.value = results\n }\n\n initTimer () {\n if (!this.data) return\n\n if (this.cardIntervalId) {\n clearInterval(this.cardIntervalId as NodeJS.Timeout)\n }\n\n if (this.data.value?.end_condition !== 'duration') {\n return\n }\n\n if (!this.freemium.preview.isActive.value && !this.data.value?.remainder_duration) {\n return\n }\n\n this.cardIntervalId = setInterval(() => {\n if (!this.data.value?.remainder_duration || this.data.value.remainder_duration <= 0) {\n clearInterval(this.cardIntervalId as NodeJS.Timeout)\n return\n }\n\n this.data.value.remainder_duration--\n }, 1000)\n }\n}\n","import { Ref, ref } from 'vue'\n\nimport { Freemium } from '.'\n\nexport class Preview {\n freemium: Freemium\n isActive: Ref = ref(false)\n readonly PREVIEW_DURATION = 1000 * 15\n\n constructor (freemium: Freemium) {\n this.freemium = freemium\n }\n\n show () {\n this.isActive.value = true\n this.freemium.goal.loopCards()\n this.freemium.supporters.loopStack()\n\n setTimeout(() => {\n this.isActive.value = false\n this.freemium.goal.loopCards()\n }, this.PREVIEW_DURATION)\n }\n}\n","const emojis = [\n '๐Ÿ˜„', '๐Ÿ˜ƒ', '๐Ÿ˜€', '๐Ÿ˜Š', 'โ˜บ', '๐Ÿ˜‰', '๐Ÿ˜', '๐Ÿ˜˜', '๐Ÿ˜š', '๐Ÿ˜—', '๐Ÿ˜™', '๐Ÿ˜œ', '๐Ÿ˜', '๐Ÿ˜›', '๐Ÿ˜ณ', '๐Ÿ˜', '๐Ÿ˜”', '๐Ÿ˜Œ', '๐Ÿ˜’', '๐Ÿ˜ž', '๐Ÿ˜ฃ', '๐Ÿ˜ข', '๐Ÿ˜‚', '๐Ÿ˜ญ', '๐Ÿ˜ช', '๐Ÿ˜ฅ', '๐Ÿ˜ฐ', '๐Ÿ˜…', '๐Ÿ˜“', '๐Ÿ˜ฉ', '๐Ÿ˜ซ', '๐Ÿ˜จ', '๐Ÿ˜ฑ', '๐Ÿ˜ ', '๐Ÿ˜ก', '๐Ÿ˜ค', '๐Ÿ˜–', '๐Ÿ˜†', '๐Ÿ˜‹', '๐Ÿ˜ท', '๐Ÿ˜Ž', '๐Ÿ˜ด', '๐Ÿ˜ต', '๐Ÿ˜ฒ', '๐Ÿ˜Ÿ', '๐Ÿ˜ฆ', '๐Ÿ˜ง', '๐Ÿ˜ˆ', '๐Ÿ‘ฟ', '๐Ÿ˜ฎ', '๐Ÿ˜ฌ', '๐Ÿ˜', '๐Ÿ˜•', '๐Ÿ˜ฏ', '๐Ÿ˜ถ', '๐Ÿ˜‡', '๐Ÿ˜', '๐Ÿ˜‘', '๐Ÿ‘ฒ', '๐Ÿ‘ณ', '๐Ÿ‘ฎ', '๐Ÿ‘ท', '๐Ÿ’‚', '๐Ÿ‘ถ', '๐Ÿ‘ฆ', '๐Ÿ‘ง', '๐Ÿ‘จ', '๐Ÿ‘ฉ', '๐Ÿ‘ด', '๐Ÿ‘ต', '๐Ÿ‘ฑ', '๐Ÿ‘ผ', '๐Ÿ‘ธ', '๐Ÿ˜บ', '๐Ÿ˜ธ', '๐Ÿ˜ป', '๐Ÿ˜ฝ', '๐Ÿ˜ผ', '๐Ÿ™€', '๐Ÿ˜ฟ', '๐Ÿ˜น', '๐Ÿ˜พ', '๐Ÿ‘น', '๐Ÿ‘บ', '๐Ÿ™ˆ', '๐Ÿ™‰', '๐Ÿ™Š', '๐Ÿ’€', '๐Ÿ‘ฝ', '๐Ÿ’ฉ', '๐Ÿ”ฅ', 'โœจ', '๐ŸŒŸ', '๐Ÿ’ซ', '๐Ÿ’ฅ', '๐Ÿ’ข', '๐Ÿ’ฆ', '๐Ÿ’ง', '๐Ÿ’ค', '๐Ÿ’จ', '๐Ÿ‘‚', '๐Ÿ‘€', '๐Ÿ‘ƒ', '๐Ÿ‘…', '๐Ÿ‘„', '๐Ÿ‘', '๐Ÿ‘Ž', '๐Ÿ‘Œ', '๐Ÿ‘Š', 'โœŠ', 'โœŒ', '๐Ÿ‘‹', 'โœ‹', '๐Ÿ‘', '๐Ÿ‘†', '๐Ÿ‘‡', '๐Ÿ‘‰', '๐Ÿ‘ˆ', '๐Ÿ™Œ', '๐Ÿ™', 'โ˜', '๐Ÿ‘', '๐Ÿ’ช', '๐Ÿšถ', '๐Ÿƒ', '๐Ÿ’ƒ', '๐Ÿ‘ซ', '๐Ÿ‘ช', '๐Ÿ‘ฌ', '๐Ÿ‘ญ', '๐Ÿ’', '๐Ÿ’‘', '๐Ÿ‘ฏ', '๐Ÿ™†', '๐Ÿ™…', '๐Ÿ’', '๐Ÿ™‹', '๐Ÿ’†', '๐Ÿ’‡', '๐Ÿ’…', '๐Ÿ‘ฐ', '๐Ÿ™Ž', '๐Ÿ™', '๐Ÿ™‡', '๐ŸŽฉ', '๐Ÿ‘‘', '๐Ÿ‘’', '๐Ÿ‘Ÿ', '๐Ÿ‘ž', '๐Ÿ‘ก', '๐Ÿ‘ ', '๐Ÿ‘ข', '๐Ÿ‘•', '๐Ÿ‘”', '๐Ÿ‘š', '๐Ÿ‘—', '๐ŸŽฝ', '๐Ÿ‘–', '๐Ÿ‘˜', '๐Ÿ‘™', '๐Ÿ’ผ', '๐Ÿ‘œ', '๐Ÿ‘', '๐Ÿ‘›', '๐Ÿ‘“', '๐ŸŽ€', '๐ŸŒ‚', '๐Ÿ’„', '๐Ÿ’›', '๐Ÿ’™', '๐Ÿ’œ', '๐Ÿ’š', 'โค', '๐Ÿ’”', '๐Ÿ’—', '๐Ÿ’“', '๐Ÿ’•', '๐Ÿ’–', '๐Ÿ’ž', '๐Ÿ’˜', '๐Ÿ’Œ', '๐Ÿ’‹', '๐Ÿ’', '๐Ÿ’Ž', '๐Ÿ‘ค', '๐Ÿ‘ฅ', '๐Ÿ’ฌ', '๐Ÿ‘ฃ', '๐Ÿ’ญ', '๐Ÿถ', '๐Ÿบ', '๐Ÿฑ', '๐Ÿญ', '๐Ÿน', '๐Ÿฐ', '๐Ÿธ', '๐Ÿฏ', '๐Ÿจ', '๐Ÿป', '๐Ÿท', '๐Ÿฝ', '๐Ÿฎ', '๐Ÿ—', '๐Ÿต', '๐Ÿ’', '๐Ÿด', '๐Ÿ‘', '๐Ÿ˜', '๐Ÿผ', '๐Ÿง', '๐Ÿฆ', '๐Ÿค', '๐Ÿฅ', '๐Ÿฃ', '๐Ÿ”', '๐Ÿ', '๐Ÿข', '๐Ÿ›', '๐Ÿ', '๐Ÿœ', '๐Ÿž', '๐ŸŒ', '๐Ÿ™', '๐Ÿš', '๐Ÿ ', '๐ŸŸ', '๐Ÿฌ', '๐Ÿณ', '๐Ÿ‹', '๐Ÿ„', '๐Ÿ', '๐Ÿ€', '๐Ÿƒ', '๐Ÿ…', '๐Ÿ‡', '๐Ÿ‰', '๐ŸŽ', '๐Ÿ', '๐Ÿ“', '๐Ÿ•', '๐Ÿ–', '๐Ÿ', '๐Ÿ‚', '๐Ÿฒ', '๐Ÿก', '๐ŸŠ', '๐Ÿซ', '๐Ÿช', '๐Ÿ†', '๐Ÿˆ', '๐Ÿฉ', '๐Ÿพ', '๐Ÿ’', '๐ŸŒธ', '๐ŸŒท', '๐Ÿ€', '๐ŸŒน', '๐ŸŒป', '๐ŸŒบ', '๐Ÿ', '๐Ÿƒ', '๐Ÿ‚', '๐ŸŒฟ', '๐ŸŒพ', '๐Ÿ„', '๐ŸŒต', '๐ŸŒด', '๐ŸŒฒ', '๐ŸŒณ', '๐ŸŒฐ', '๐ŸŒฑ', '๐ŸŒผ', '๐ŸŒ', '๐ŸŒž', '๐ŸŒ', '๐ŸŒš', '๐ŸŒ‘', '๐ŸŒ’', '๐ŸŒ“', '๐ŸŒ”', '๐ŸŒ•', '๐ŸŒ–', '๐ŸŒ—', '๐ŸŒ˜', '๐ŸŒœ', '๐ŸŒ›', '๐ŸŒ™', '๐ŸŒ', '๐ŸŒŽ', '๐ŸŒ', '๐ŸŒ‹', '๐ŸŒŒ', '๐ŸŒ ', 'โญ', 'โ˜€', 'โ›…', 'โ˜', 'โšก', 'โ˜”', 'โ„', 'โ›„', '๐ŸŒ€', '๐ŸŒ', '๐ŸŒˆ', '๐ŸŒŠ', '๐ŸŽ', '๐Ÿ’', '๐ŸŽŽ', '๐ŸŽ’', '๐ŸŽ“', '๐ŸŽ', '๐ŸŽ†', '๐ŸŽ‡', '๐ŸŽ', '๐ŸŽ‘', '๐ŸŽƒ', '๐Ÿ‘ป', '๐ŸŽ…', '๐ŸŽ„', '๐ŸŽ', '๐ŸŽ‹', '๐ŸŽ‰', '๐ŸŽŠ', '๐ŸŽˆ', '๐ŸŽŒ', '๐Ÿ”ฎ', '๐ŸŽฅ', '๐Ÿ“ท', '๐Ÿ“น', '๐Ÿ“ผ', '๐Ÿ’ฟ', '๐Ÿ“€', '๐Ÿ’ฝ', '๐Ÿ’พ', '๐Ÿ’ป', '๐Ÿ“ฑ', 'โ˜Ž', '๐Ÿ“ž', '๐Ÿ“Ÿ', '๐Ÿ“ ', '๐Ÿ“ก', '๐Ÿ“บ', '๐Ÿ“ป', '๐Ÿ”Š', '๐Ÿ”‰', '๐Ÿ”ˆ', '๐Ÿ”‡', '๐Ÿ””', '๐Ÿ”•', '๐Ÿ“ข', '๐Ÿ“ฃ', 'โณ', 'โŒ›', 'โฐ', 'โŒš', '๐Ÿ”“', '๐Ÿ”’', '๐Ÿ”', '๐Ÿ”', '๐Ÿ”‘', '๐Ÿ”Ž', '๐Ÿ’ก', '๐Ÿ”ฆ', '๐Ÿ”†', '๐Ÿ”…', '๐Ÿ”Œ', '๐Ÿ”‹', '๐Ÿ”', '๐Ÿ›', '๐Ÿ›€', '๐Ÿšฟ', '๐Ÿšฝ', '๐Ÿ”ง', '๐Ÿ”ฉ', '๐Ÿ”จ', '๐Ÿšช', '๐Ÿšฌ', '๐Ÿ’ฃ', '๐Ÿ”ซ', '๐Ÿ”ช', '๐Ÿ’Š', '๐Ÿ’‰', '๐Ÿ’ฐ', '๐Ÿ’ด', '๐Ÿ’ต', '๐Ÿ’ท', '๐Ÿ’ถ', '๐Ÿ’ณ', '๐Ÿ’ธ', '๐Ÿ“ฒ', '๐Ÿ“ง', '๐Ÿ“ฅ', '๐Ÿ“ค', 'โœ‰', '๐Ÿ“ฉ', '๐Ÿ“จ', '๐Ÿ“ฏ', '๐Ÿ“ซ', '๐Ÿ“ช', '๐Ÿ“ฌ', '๐Ÿ“ญ', '๐Ÿ“ฎ', '๐Ÿ“ฆ', '๐Ÿ“', '๐Ÿ“„', '๐Ÿ“ƒ', '๐Ÿ“‘', '๐Ÿ“Š', '๐Ÿ“ˆ', '๐Ÿ“‰', '๐Ÿ“œ', '๐Ÿ“‹', '๐Ÿ“…', '๐Ÿ“†', '๐Ÿ“‡', '๐Ÿ“', '๐Ÿ“‚', 'โœ‚', '๐Ÿ“Œ', '๐Ÿ“Ž', 'โœ’', 'โœ', '๐Ÿ“', '๐Ÿ“', '๐Ÿ“•', '๐Ÿ“—', '๐Ÿ“˜', '๐Ÿ“™', '๐Ÿ““', '๐Ÿ“”', '๐Ÿ“’', '๐Ÿ“š', '๐Ÿ“–', '๐Ÿ”–', '๐Ÿ“›', '๐Ÿ”ฌ', '๐Ÿ”ญ', '๐Ÿ“ฐ', '๐ŸŽจ', '๐ŸŽฌ', '๐ŸŽค', '๐ŸŽง', '๐ŸŽผ', '๐ŸŽต', '๐ŸŽถ', '๐ŸŽน', '๐ŸŽป', '๐ŸŽบ', '๐ŸŽท', '๐ŸŽธ', '๐Ÿ‘พ', '๐ŸŽฎ', '๐Ÿƒ', '๐ŸŽด', '๐Ÿ€„', '๐ŸŽฒ', '๐ŸŽฏ', '๐Ÿˆ', '๐Ÿ€', 'โšฝ', 'โšพ', '๐ŸŽพ', '๐ŸŽฑ', '๐Ÿ‰', '๐ŸŽณ', 'โ›ณ', '๐Ÿšต', '๐Ÿšด', '๐Ÿ', '๐Ÿ‡', '๐Ÿ†', '๐ŸŽฟ', '๐Ÿ‚', '๐ŸŠ', '๐Ÿ„', '๐ŸŽฃ', 'โ˜•', '๐Ÿต', '๐Ÿถ', '๐Ÿผ', '๐Ÿบ', '๐Ÿป', '๐Ÿธ', '๐Ÿน', '๐Ÿท', '๐Ÿด', '๐Ÿ•', '๐Ÿ”', '๐ŸŸ', '๐Ÿ—', '๐Ÿ–', '๐Ÿ', '๐Ÿ›', '๐Ÿค', '๐Ÿฑ', '๐Ÿฃ', '๐Ÿฅ', '๐Ÿ™', '๐Ÿ˜', '๐Ÿš', '๐Ÿœ', '๐Ÿฒ', '๐Ÿข', '๐Ÿก', '๐Ÿณ', '๐Ÿž', '๐Ÿฉ', '๐Ÿฎ', '๐Ÿฆ', '๐Ÿจ', '๐Ÿง', '๐ŸŽ‚', '๐Ÿฐ', '๐Ÿช', '๐Ÿซ', '๐Ÿฌ', '๐Ÿญ', '๐Ÿฏ', '๐ŸŽ', '๐Ÿ', '๐ŸŠ', '๐Ÿ‹', '๐Ÿ’', '๐Ÿ‡', '๐Ÿ‰', '๐Ÿ“', '๐Ÿ‘', '๐Ÿˆ', '๐ŸŒ', '๐Ÿ', '๐Ÿ', '๐Ÿ ', '๐Ÿ†', '๐Ÿ…', '๐ŸŒฝ', '๐Ÿ ', '๐Ÿก', '๐Ÿซ', '๐Ÿข', '๐Ÿฃ', '๐Ÿฅ', '๐Ÿฆ', '๐Ÿช', '๐Ÿฉ', '๐Ÿจ', '๐Ÿ’’', 'โ›ช', '๐Ÿฌ', '๐Ÿค', '๐ŸŒ‡', '๐ŸŒ†', '๐Ÿฏ', '๐Ÿฐ', 'โ›บ', '๐Ÿญ', '๐Ÿ—ผ', '๐Ÿ—พ', '๐Ÿ—ป', '๐ŸŒ„', '๐ŸŒ…', '๐ŸŒƒ', '๐Ÿ—ฝ', '๐ŸŒ‰', '๐ŸŽ ', '๐ŸŽก', 'โ›ฒ', '๐ŸŽข', '๐Ÿšข', 'โ›ต', '๐Ÿšค', '๐Ÿšฃ', 'โš“', '๐Ÿš€', 'โœˆ', '๐Ÿ’บ', '๐Ÿš', '๐Ÿš‚', '๐ŸšŠ', '๐Ÿš‰', '๐Ÿšž', '๐Ÿš†', '๐Ÿš„', '๐Ÿš…', '๐Ÿšˆ', '๐Ÿš‡', '๐Ÿš', '๐Ÿš‹', '๐Ÿšƒ', '๐ŸšŽ', '๐ŸšŒ', '๐Ÿš', '๐Ÿš™', '๐Ÿš˜', '๐Ÿš—', '๐Ÿš•', '๐Ÿš–', '๐Ÿš›', '๐Ÿšš', '๐Ÿšจ', '๐Ÿš“', '๐Ÿš”', '๐Ÿš’', '๐Ÿš‘', '๐Ÿš', '๐Ÿšฒ', '๐Ÿšก', '๐ŸšŸ', '๐Ÿš ', '๐Ÿšœ', '๐Ÿ’ˆ', '๐Ÿš', '๐ŸŽซ', '๐Ÿšฆ', '๐Ÿšฅ', 'โš ', '๐Ÿšง', '๐Ÿ”ฐ', 'โ›ฝ', '๐Ÿฎ', '๐ŸŽฐ', 'โ™จ', '๐Ÿ—ฟ', '๐ŸŽช', '๐ŸŽญ', '๐Ÿ“', '๐Ÿšฉ', 'โฌ†', 'โฌ‡', 'โฌ…', 'โžก', '๐Ÿ” ', '๐Ÿ”ก', '๐Ÿ”ค', 'โ†—', 'โ†–', 'โ†˜', 'โ†™', 'โ†”', 'โ†•', '๐Ÿ”„', 'โ—€', 'โ–ถ', '๐Ÿ”ผ', '๐Ÿ”ฝ', 'โ†ฉ', 'โ†ช', 'โ„น', 'โช', 'โฉ', 'โซ', 'โฌ', 'โคต', 'โคด', '๐Ÿ†—', '๐Ÿ”€', '๐Ÿ”', '๐Ÿ”‚', '๐Ÿ†•', '๐Ÿ†™', '๐Ÿ†’', '๐Ÿ†“', '๐Ÿ†–', '๐Ÿ“ถ', '๐ŸŽฆ', '๐Ÿˆ', '๐Ÿˆฏ', '๐Ÿˆณ', '๐Ÿˆต', '๐Ÿˆด', '๐Ÿˆฒ', '๐Ÿ‰', '๐Ÿˆน', '๐Ÿˆบ', '๐Ÿˆถ', '๐Ÿˆš', '๐Ÿšป', '๐Ÿšน', '๐Ÿšบ', '๐Ÿšผ', '๐Ÿšพ', '๐Ÿšฐ', '๐Ÿšฎ', '๐Ÿ…ฟ', 'โ™ฟ', '๐Ÿšญ', '๐Ÿˆท', '๐Ÿˆธ', '๐Ÿˆ‚', 'โ“‚', '๐Ÿ›‚', '๐Ÿ›„', '๐Ÿ›…', '๐Ÿ›ƒ', '๐Ÿ‰‘', 'ใŠ™', 'ใŠ—', '๐Ÿ†‘', '๐Ÿ†˜', '๐Ÿ†”', '๐Ÿšซ', '๐Ÿ”ž', '๐Ÿ“ต', '๐Ÿšฏ', '๐Ÿšฑ', '๐Ÿšณ', '๐Ÿšท', '๐Ÿšธ', 'โ›”', 'โœณ', 'โ‡', 'โŽ', 'โœ…', 'โœด', '๐Ÿ’Ÿ', '๐Ÿ†š', '๐Ÿ“ณ', '๐Ÿ“ด', '๐Ÿ…ฐ', '๐Ÿ…ฑ', '๐Ÿ†Ž', '๐Ÿ…พ', '๐Ÿ’ ', 'โžฟ', 'โ™ป', 'โ™ˆ', 'โ™‰', 'โ™Š', 'โ™‹', 'โ™Œ', 'โ™', 'โ™Ž', 'โ™', 'โ™', 'โ™‘', 'โ™’', 'โ™“', 'โ›Ž', '๐Ÿ”ฏ', '๐Ÿง', '๐Ÿ’น', '๐Ÿ’ฒ', '๐Ÿ’ฑ', 'ยฉ', 'ยฎ', 'โ„ข', 'ใ€ฝ', 'ใ€ฐ', '๐Ÿ”', '๐Ÿ”š', '๐Ÿ”™', '๐Ÿ”›', '๐Ÿ”œ', 'โŒ', 'โญ•', 'โ—', 'โ“', 'โ•', 'โ”', '๐Ÿ”ƒ', '๐Ÿ•›', '๐Ÿ•ง', '๐Ÿ•', '๐Ÿ•œ', '๐Ÿ•‘', '๐Ÿ•', '๐Ÿ•’', '๐Ÿ•ž', '๐Ÿ•“', '๐Ÿ•Ÿ', '๐Ÿ•”', '๐Ÿ• ', '๐Ÿ••', '๐Ÿ•–', '๐Ÿ•—', '๐Ÿ•˜', '๐Ÿ•™', '๐Ÿ•š', '๐Ÿ•ก', '๐Ÿ•ข', '๐Ÿ•ฃ', '๐Ÿ•ค', '๐Ÿ•ฅ', '๐Ÿ•ฆ', 'โœ–', 'โž•', 'โž–', 'โž—', 'โ™ ', 'โ™ฅ', 'โ™ฃ', 'โ™ฆ', '๐Ÿ’ฎ', '๐Ÿ’ฏ', 'โœ”', 'โ˜‘', '๐Ÿ”˜', '๐Ÿ”—', 'โžฐ', '๐Ÿ”ฑ', '๐Ÿ”ฒ', '๐Ÿ”ณ', 'โ—ผ', 'โ—ป', 'โ—พ', 'โ—ฝ', 'โ–ช', 'โ–ซ', '๐Ÿ”บ', 'โฌœ', 'โฌ›', 'โšซ', 'โšช', '๐Ÿ”ด', '๐Ÿ”ต', '๐Ÿ”ป', '๐Ÿ”ถ', '๐Ÿ”ท', '๐Ÿ”ธ', '๐Ÿ”น',\n]\n\nexport const getRandomEmoji = () => {\n return emojis[Math.floor(Math.random() * emojis.length)]\n}\n","import { demoResults } from 'components/freemium/freemium-mock'\nimport { getRandomEmoji } from 'lib/helpers/getRandomEmoji'\nimport { IStreamerFreemiumTopSupporters } from 'lib/types/payloads/streamer-freemium'\nimport { FreemiumPosition, IFreemiumSetup, IFreemiumSupport } from 'lib/types/streamer-freemium/freemium-setup'\nimport { IFreemiumSupporter, IFreemiumWidgetSupporter } from 'lib/types/streamer-freemium/freemium-supporters'\nimport { IFreemiumWidget, IFreemiumWidgetSupporters } from 'lib/types/streamer-freemium/freemium-widget'\nimport { debounce } from 'lodash'\nimport { Ref, ref } from 'vue'\n\nimport { Freemium } from '.'\n\nconst defaultTopSupporters: IFreemiumWidgetSupporters = {\n top: [],\n topToday: [],\n}\nexport class Supporters {\n freemium: Freemium\n data: Ref = ref(null)\n stack: Ref = ref([])\n recent: Ref = ref([])\n top: Ref = ref(defaultTopSupporters)\n position: Ref = ref(FreemiumPosition.LEFT_BOTTOM_CORNER)\n positionAlign: 'top' | 'bottom' = 'bottom'\n isAdding: Ref = ref(false)\n isFirstRemoving: Ref = ref(false)\n private readonly TRANSITION_MS = 300\n private readonly MAX_IN_STACK = 5\n private readonly ADD_INTERVALS = [1000 * 3, 1000 * 5]\n private readonly VISIBLE_MS = 1000 * 7\n\n constructor (freemium: Freemium) {\n this.freemium = freemium\n }\n\n setup (data: IFreemiumSetup['support']) {\n this.data.value = data\n this.position.value = data.position\n\n switch (this.position.value) {\n case FreemiumPosition.LEFT_BOTTOM_CORNER:\n case FreemiumPosition.RIGHT_BOTTOM_CORNER:\n this.positionAlign = 'bottom'\n return\n case FreemiumPosition.LEFT_TOP_CORNER:\n case FreemiumPosition.RIGHT_TOP_CORNER:\n this.positionAlign = 'top'\n }\n }\n\n updateLists (data: IFreemiumWidget['supporters']) {\n this.recent.value = [...this.recent.value, ...data.recent]\n this.top.value = {\n top: data.top,\n topToday: data.topToday,\n }\n }\n\n private addToRecent (supporter: IFreemiumWidgetSupporter) {\n this.isAdding.value = true\n if (this.positionAlign === 'bottom') {\n this.stack.value.push(supporter)\n }\n if (this.positionAlign === 'top') {\n this.stack.value.unshift(supporter)\n }\n\n setTimeout(() => (this.isAdding.value = false), this.TRANSITION_MS)\n\n if (this.stack.value.length >= this.MAX_IN_STACK + 1) {\n setTimeout(() => (this.isFirstRemoving.value = true), this.TRANSITION_MS)\n setTimeout(() => this.removeFromRecent(), this.TRANSITION_MS * 2)\n }\n else {\n setTimeout(() => this.removeFromRecent(), this.VISIBLE_MS)\n }\n }\n\n private removeFromRecent () {\n if (this.positionAlign === 'bottom') {\n this.stack.value.shift()\n }\n if (this.positionAlign === 'top') {\n this.stack.value.pop()\n }\n this.isFirstRemoving.value = false\n }\n\n loopStack () {\n const recentSupporters = this.freemium.preview.isActive.value ? demoResults.supporters.recent : this.recent.value\n\n if (!recentSupporters || !recentSupporters.length) {\n return\n }\n\n const getRandomInterval = () => this.ADD_INTERVALS[Math.floor(Math.random() * this.ADD_INTERVALS.length)]\n\n const inteval = setInterval(() => {\n debounce(() => {\n if (!recentSupporters || !recentSupporters.length) {\n clearInterval(inteval)\n return\n }\n\n const supporter = recentSupporters.shift()\n\n if (!supporter) {\n clearInterval(inteval)\n return\n }\n\n this.addToRecent({\n emoji: getRandomEmoji(),\n nickname: supporter.name,\n anonymous: Boolean(supporter.name && supporter.name !== ''),\n createdAt: supporter?.updatedAt,\n })\n }, getRandomInterval())()\n }, 1000)\n }\n}\n","import { Ref, ref } from 'vue'\nimport { Widget } from 'Widget/class/Widget'\n\nimport { getWidget } from 'lib/api/modules/streamer/freemium/widget'\nimport { getSetup } from 'lib/api/modules/widget/freemium'\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ErrorMessage } from 'lib/types/error-message'\nimport { IFreemiumSetup } from 'lib/types/streamer-freemium/freemium-setup'\nimport { IFreemiumWidget } from 'lib/types/streamer-freemium/freemium-widget'\n\nimport { Chat } from './Chat'\nimport { Goal } from './Goal'\nimport { Poll } from './Poll'\nimport { Preview } from './Preview'\nimport { Supporters } from './Supporters'\n\nexport class Freemium {\n widget: Widget;\n isActive: Ref = ref(false)\n\n preview = new Preview(this)\n goal = new Goal(this)\n poll = new Poll(this)\n supporters = new Supporters(this)\n chat: Chat\n\n readonly POLLING_INTERVAL = 1000 * 60 * 1\n pollingIntervalId: NodeJS.Timer | null = null\n\n constructor (widget: Widget) {\n this.widget = widget\n this.chat = new Chat(this)\n }\n\n async init () {\n try {\n this.isActive.value = this.widget.data.value.streamer?.freemium_active || false\n\n if (!this.isActive.value) {\n return\n }\n\n const { data, status } = await getSetup(this.widget.data.value.slug)\n\n if (!status) {\n Logger.critical(ErrorMessage.WIDGET_FREEMIUM_START, false)\n return\n }\n\n this.start(data)\n }\n catch (err) {\n Logger.critical(ErrorMessage.WIDGET_FREEMIUM_START, false)\n }\n }\n\n start (data: IFreemiumSetup) {\n this.setup(data)\n this.goal.loopCards()\n this.poll.initTimer()\n this.initPolling()\n this.chat.init()\n }\n\n private setup (data: IFreemiumSetup) {\n this.goal.setup(data.goal)\n this.poll.setup(data.poll)\n this.supporters.setup(data.support)\n this.chat.setup(data)\n }\n\n private async initPolling () {\n if (this.pollingIntervalId) {\n clearInterval(this.pollingIntervalId as NodeJS.Timeout)\n }\n\n await this.fetctData()\n\n this.pollingIntervalId = setInterval(async () => {\n await this.fetctData()\n }, this.POLLING_INTERVAL)\n }\n\n private async fetctData () {\n const streamerId = this.widget.data.value.streamer?.user_id\n\n if (!streamerId) {\n return\n }\n\n const data = await getWidget(\n streamerId,\n this.goal.data.value ? this.goal.data.value?.id : null,\n this.poll.data.value ? this.poll.data.value?.id : null,\n ) as IFreemiumWidget\n this.update(data)\n this.supporters.loopStack()\n }\n\n private update (data: IFreemiumWidget) {\n this.goal.updateProgress(data.goalProgress)\n this.poll.updateResults(data.pollResults)\n this.supporters.updateLists(data.supporters)\n }\n}\n","const ms = 1000\nexport const REQUEST_LOOP_TICK = ms\nexport const REQUEST_INTERVAL = ms * 60 * 15\nexport const CREATIVES_LOOP_TICK = ms * 5\nexport const BRAND_AWARENESS_COOLDOWN = REQUEST_INTERVAL + 20\nexport const REFERRAL_PROMO_COOLDOWN = ms * 60 * 60 * 2\nexport const PRIMAL_TIMER_TIMEOUT = ms * 60 * 10\nexport const TIME_BEFORE_PRELOAD = ms * 60\nexport const BS_CHECK_BEFORE_REQUEST = ms * 60 * 5\nexport const CHATBOT_TEXT_DELAY = ms * 60 * 5\nexport const SCREENSHOT_TIMEOUT = ms * 60 * 60\nexport const SCREENSHOT_DELAY = ms * 8\nexport const CONVERSION_ALERT_DURATION_MAX = ms * 10\n\nexport enum YandexTextDelay {\n ONE = ms * 60 * 7,\n TWO = ms * 60 * 5,\n THREE = ms * 60 * 3.3\n}\n","import { ICreative, IDemoCreative, IPromoCreative } from 'lib/types/creative'\n\nfunction hasErrorMessage (value: unknown): value is { message: string } {\n return typeof value === 'object' &&\n value !== null &&\n 'message' in value &&\n typeof value.message === 'string'\n}\n\nexport const preloadVideo = (path: string): Promise => {\n return new Promise((resolve, reject) => {\n // VAST ads has xml format\n if (path.includes('.xml')) {\n resolve()\n return\n }\n\n const video = document.createElement('video')\n const errorTimeout = setTimeout(() => {\n reject(new Error(`Video ${path} is not loaded`))\n }, 60 * 1000)\n\n video.onloadeddata = function () {\n clearTimeout(errorTimeout)\n video.remove()\n resolve()\n }\n video.setAttribute('src', path)\n })\n}\n\nconst preloadImage = (path: string): Promise => {\n return new Promise((resolve, reject) => {\n const image = new Image()\n const errorTimeout = setTimeout(() => {\n reject(new Error(`Image ${path} is not loaded`))\n }, 60 * 1000)\n\n image.onload = function () {\n clearTimeout(errorTimeout)\n image.remove()\n resolve()\n }\n image.setAttribute('src', path)\n })\n}\n\nconst preloadUnit = async (path: string): Promise => {\n const lowerCasePath = path.toLowerCase()\n if (/\\.mp4|\\.webm$/.test(lowerCasePath)) {\n return await preloadVideo(path)\n }\n else if (/\\.jpg|\\.jpeg|\\.png|\\.gif$/.test(lowerCasePath)) {\n return await preloadImage(path)\n }\n else {\n throw new Error('Undefined unit format')\n }\n}\n\nexport const tryPreloadImage = async (ad: ICreative | IDemoCreative | IPromoCreative) => {\n if (ad.attachments.image) {\n try {\n await preloadImage(ad.attachments.image.path)\n }\n catch (err) {\n throw new Error(hasErrorMessage(err) ? err.message : 'Image was not preloaded')\n }\n }\n return null\n}\n\nexport const tryPreloadVideo = async (ad: ICreative | IDemoCreative | IPromoCreative) => {\n if (ad.attachments.video) {\n try {\n await preloadVideo(ad.attachments.video.path)\n }\n catch (err) {\n throw new Error(hasErrorMessage(err) ? err.message : 'Video was not preloaded')\n }\n }\n}\n\nexport const tryPreloadUnit = async (ad: ICreative | IDemoCreative | IPromoCreative) => {\n if (ad.attachments.unit) {\n try {\n await preloadUnit(ad.attachments.unit.path)\n }\n catch (err) {\n throw new Error(hasErrorMessage(err) ? err.message : 'Unit was not preloaded')\n }\n }\n}\n","import { ref } from 'vue'\nimport { Widget } from 'Widget/class/Widget'\nimport { CONVERSION_ALERT_DURATION_MAX } from 'Widget/constants/delays'\nimport { IPusherConversionAlert } from 'Widget/types'\nimport { preloadVideo } from 'Widget/utils/preloadUtils'\n\nexport class ConvertionAlert {\n widget: Widget\n\n isShowing = ref(false)\n currentAlert = ref(null)\n alertTimeout = ref(null)\n\n constructor (widget: Widget) {\n this.widget = widget\n }\n\n async showAlert (alert: IPusherConversionAlert) {\n if (this.widget.creativesManager.showWrapper.value || this.isShowing.value) return\n\n await preloadVideo(alert.animation.path)\n\n this.currentAlert.value = alert\n this.isShowing.value = true\n\n this.alertTimeout.value = setTimeout(() => {\n this.hideAlert()\n }, CONVERSION_ALERT_DURATION_MAX)\n }\n\n hideAlert () {\n this.currentAlert.value = null\n this.isShowing.value = false\n }\n\n clearAlertTimeout () {\n if (this.alertTimeout.value) {\n clearTimeout(this.alertTimeout.value)\n this.alertTimeout.value = null\n }\n }\n}\n","import { CREATIVES_LOOP_TICK, REQUEST_INTERVAL, TIME_BEFORE_PRELOAD } from 'Widget/constants/delays'\nimport { IQueueCreative } from 'Widget/types'\n\nimport { ICreative, IDemoCreative, IPromoCreative } from 'lib/types/creative'\n\nimport { Widget } from './Widget'\n\nexport class CreativesLoop {\n widget: Widget\n queue: Array> = []\n demo: Array = []\n\n constructor (widget: Widget) {\n this.widget = widget\n }\n\n get isPaused () {\n const isCreativePreloading = this.widget.creativesManager.isPreloading.value\n const isCreativePlaying = this.widget.creativesManager.isPlaying.value\n const isCreativeIntro = this.widget.creativesManager.isIntro.value\n return isCreativePlaying || isCreativeIntro || isCreativePreloading\n }\n\n init () {\n setInterval(async () => {\n await this.check()\n }, CREATIVES_LOOP_TICK)\n }\n\n async check () {\n if (this.isPaused) return\n if (this.demo.length) {\n await this.startDemo()\n }\n else if (this.queue.length && !this.widget.isManual) {\n const now = new Date().getTime()\n const isTimeToPreload = this.queue[0].whenDisplay < now - TIME_BEFORE_PRELOAD\n\n if (isTimeToPreload) {\n await this.startAd()\n }\n }\n }\n\n addAd (adSet: ICreative[] | IPromoCreative[], _whenDisplay?: number) {\n if (this.widget.isManual) {\n this.queue = [{\n whenDisplay: new Date().getTime(),\n adSet,\n }]\n }\n else {\n const lastAd = this.queue[this.queue.length - 1]\n const whenDisplay = lastAd ? lastAd.whenDisplay + REQUEST_INTERVAL : new Date().getTime()\n\n this.queue.push({\n whenDisplay: _whenDisplay || whenDisplay,\n adSet,\n })\n }\n }\n\n addDemo (adSet: IDemoCreative[]) {\n this.demo = adSet\n }\n\n async startDemo () {\n const adSet = this.demo\n this.demo = []\n const { preloaded } = await this.widget.creativesManager.preload(adSet)\n await this.widget.creativesManager.displayDemo(preloaded)\n }\n\n async startAd () {\n const { adSet, whenDisplay } = this.queue.shift() as IQueueCreative\n const { preloaded } = await this.widget.creativesManager.preload(adSet)\n await this.widget.creativesManager.displayAd(preloaded, whenDisplay)\n }\n}\n","import { ref } from 'vue'\n\nexport class CreativeTimer {\n interval: ReturnType | null = null\n current = ref(0)\n total = ref(0)\n\n stop () {\n if (this.interval) clearInterval(this.interval)\n }\n\n reset (time = 0) {\n this.stop()\n this.total.value = time\n this.current.value = 0\n }\n\n play (_limit?: number): Promise {\n return new Promise(resolve => {\n const limit = _limit || this.total.value\n const delay = 1000 / 60\n let sumTime = 0\n let oldTime = new Date().getTime()\n\n this.interval = setInterval(() => {\n const nowTime = new Date().getTime()\n const deltaTime = nowTime - oldTime\n sumTime += deltaTime\n oldTime = nowTime\n this.current.value += deltaTime\n\n if (sumTime >= limit) {\n this.stop()\n resolve()\n }\n }, delay)\n })\n }\n}\n","import { Logger } from 'lib/helpers/handleLog'\nimport { isSspFormat } from 'lib/helpers/isSsp'\nimport { AdFormat } from 'lib/types/ad-format'\nimport { ICreative, IDemoCreative, IPromoCreative } from 'lib/types/creative'\n\nimport {\n tryPreloadImage,\n tryPreloadUnit,\n tryPreloadVideo,\n} from './preloadUtils'\n\nexport const preloadCreatives = async (\n adSet: Array,\n): Promise<{\n preloaded: Array\n}> => {\n const preloaded: Array = []\n\n for (const ad of adSet) {\n const { video, image, unit, zip } = ad.attachments\n\n if (isSspFormat(ad.adSet.format) || ad.adSet.format === AdFormat.CHATBOT_TEXT) {\n preloaded.push(ad)\n continue\n }\n\n if (!video && !image && !unit && !zip) {\n Logger.warning('Undefined attachment format', false, { creativeSlug: ad.slug })\n return { preloaded }\n }\n\n try {\n await tryPreloadImage(ad)\n await tryPreloadVideo(ad)\n await tryPreloadUnit(ad)\n // zip does not require preloading\n preloaded.push(ad)\n }\n catch (err) {\n Logger.warning('Attachment was not preloaded before showing ads', false, { err, creativeSlug: ad.slug })\n }\n }\n\n return { preloaded }\n}\n","import { ICreative, IDemoCreative, IPromoCreative } from 'lib/types/creative'\n\nexport const getCreativeDuration = (creatives: ICreative[] | IDemoCreative[] | IPromoCreative[]) => {\n let duration = 0\n\n creatives.forEach(creative => {\n const { attachments } = creative\n\n if (attachments.video) {\n duration += Math.floor(attachments.video.properties.duration || 0)\n }\n else if (attachments.unit) {\n if (attachments.unit.properties.duration) {\n duration += Math.floor(attachments.unit.properties.duration || 0)\n }\n // else {\n // duration += 15\n // }\n }\n else if (attachments.zip) {\n duration += 15\n }\n })\n\n return duration * 1000\n}\n","export const wait = (delay: number) => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve()\n }, delay)\n })\n}\n","import { computed, Ref, ref } from 'vue'\nimport { CreativeTimer } from 'Widget/class/CreativeTimer'\nimport { Widget } from 'Widget/class/Widget'\nimport { preloadCreatives } from 'Widget/utils/preload'\n\nimport { Analytic } from 'lib/helpers/Analytic'\nimport { Logger } from 'lib/helpers/handleLog'\nimport { isSspFormat, isSspMediaFormat, isSspTextFormat } from 'lib/helpers/isSsp'\nimport { AdFormat } from 'lib/types/ad-format'\nimport { ICreative, IDemoCreative, IPromoCreative } from 'lib/types/creative'\nimport { ErrorMessage } from 'lib/types/error-message'\n\nimport { CHATBOT_TEXT_DELAY, YandexTextDelay } from '../constants/delays'\nimport { getCreativeDuration } from '../utils/get-creative-duration'\nimport { wait } from '../utils/wait'\n\nimport { Chatbot } from './Chatbot'\n\nexport class CreativesManager {\n widget: Widget\n chatbot: Chatbot\n timer: CreativeTimer = new CreativeTimer()\n adSet: Ref = ref([])\n creative: Ref = ref(null)\n isUpdating: Ref = ref(false)\n currentCreativeIndex: Ref = ref(-1)\n isPreloading: Ref = ref(false)\n isPlaying: Ref = ref(false)\n isIntro: Ref = ref(false)\n showWrapper: Ref\n\n constructor (widget: Widget) {\n this.widget = widget\n this.chatbot = new Chatbot(widget)\n\n this.showWrapper = computed(() => {\n return this.isPlaying.value || this.isIntro.value\n })\n }\n\n async preload (\n adSet: Array,\n ): Promise<{ preloaded: Array }> {\n this.isPreloading.value = true\n const { preloaded } = await preloadCreatives(adSet)\n this.isPreloading.value = false\n return { preloaded }\n }\n\n async displayAd (adSet: ICreative[] | IPromoCreative[], whenDisplay = 0) {\n if (whenDisplay === 0) {\n await this.playCreatives(adSet)\n }\n else {\n const waitingInterval = setInterval(async () => {\n const now = new Date().getTime()\n if (whenDisplay < now) {\n clearInterval(waitingInterval)\n await this.playIntro(20 * 1000, adSet[0])\n await this.playCreatives(adSet)\n }\n }, 1000)\n }\n }\n\n async displayDemo (demo: IDemoCreative[]) {\n await this.playIntro(5 * 1000)\n await this.playCreatives(demo)\n }\n\n async playIntro (time: number, creative?: ICreative | IPromoCreative) {\n if (creative?.adSet.format && [AdFormat.YANDEX_TEXT, AdFormat.CHATBOT_TEXT].includes(creative.adSet.format)) {\n return\n }\n\n this.isIntro.value = true\n this.timer.reset(time)\n await this.timer.play()\n this.isIntro.value = false\n }\n\n async playCreatives (adSet: ICreative[] | IDemoCreative[] | IPromoCreative[]) {\n this.adSet.value = adSet\n const totalTime = getCreativeDuration(this.adSet.value)\n\n this.isPlaying.value = true\n this.timer.reset(totalTime)\n this.nextCreative()\n }\n\n async onPlayEnd () {\n if (this.creative.value?.slug && this.creative.value?.slug !== 'Demo') {\n Analytic.ga('ecommerce:addTransaction', {\n id: this.creative.value.uuid,\n affiliation: this.widget?.data.value.streamer?.name,\n revenue: this.creative.value?.viewersCount,\n })\n }\n\n this.timer.stop()\n await this.nextCreative()\n }\n\n async nextCreative () {\n const index = this.increaseCreativeIndex()\n\n if (index === this.adSet.value.length) {\n this.finish()\n return\n }\n\n const creative = this.adSet.value[index]\n\n if (isSspMediaFormat(creative.adSet.format)) {\n this.setCreative(null)\n this.isUpdating.value = true\n\n await wait(100)\n\n this.isUpdating.value = false\n\n this.switchCreative(creative)\n\n return\n }\n else if ([AdFormat.YANDEX_TEXT, AdFormat.CHATBOT_TEXT].includes(creative.adSet.format)) {\n this.setCreative(null)\n this.isUpdating.value = false\n\n await wait(this.getTextCreativeDelay(creative))\n\n this.switchCreative(creative)\n\n return\n }\n\n this.switchCreative(creative)\n }\n\n private getTextCreativeDelay (creative: ICreative | IDemoCreative) {\n if (creative.adSet.format === AdFormat.YANDEX_TEXT) {\n if (this.widget.data.value.sspTextFrequency === 1) {\n return YandexTextDelay.ONE\n }\n if (this.widget.data.value.sspTextFrequency === 2) {\n return YandexTextDelay.TWO\n }\n if (this.widget.data.value.sspTextFrequency === 3) {\n return YandexTextDelay.THREE\n }\n }\n\n return CHATBOT_TEXT_DELAY\n }\n\n private async switchCreative (creative: ICreative | IDemoCreative) {\n if (creative) {\n if (![AdFormat.YANDEX_TEXT, AdFormat.CHATBOT_TEXT].includes(creative.adSet.format)) {\n this.widget.screenshot.makeScreenshot(creative)\n }\n\n this.setCreative(creative)\n this.chatbot.sendMessage(creative)\n\n if ([AdFormat.YANDEX_TEXT, AdFormat.CHATBOT_TEXT].includes(creative.adSet.format)) {\n return\n }\n\n await this.startImageTimer(creative)\n }\n }\n\n increaseCreativeIndex () {\n this.currentCreativeIndex.value += 1\n return this.currentCreativeIndex.value\n }\n\n setCreative (creative: ICreative | IDemoCreative | IPromoCreative | null) {\n this.creative.value = creative\n return this.creative.value\n }\n\n async startImageTimer (creative: ICreative | IDemoCreative | IPromoCreative) {\n const hasUnitDuration = creative.attachments.unit?.properties?.duration\n const hasVideoDuration = creative.attachments.video?.properties?.duration\n const isImage = !hasUnitDuration && !hasVideoDuration\n\n if (isImage) {\n await this.timer.play(15 * 1000)\n await this.onPlayEnd()\n }\n }\n\n finish () {\n if (!this.creative.value) {\n Logger.warning(ErrorMessage.WIDGET_UNDEFINED_CREATIVE, false, { slug: this.widget.slug })\n }\n else if (this.creative.value.slug !== 'Demo') {\n Analytic.ga('ecommerce:send', {\n id: this.creative.value.uuid,\n affiliation: this.widget.data.value.streamer?.name,\n revenue: this.creative.value?.viewersCount,\n })\n Analytic.dataLayer({ event: 'viewAds' })\n }\n\n this.timer.reset()\n this.isPlaying.value = false\n this.isIntro.value = false\n this.currentCreativeIndex.value = -1\n this.creative.value = null\n }\n}\n","import { ref } from 'vue'\nimport Echo from 'laravel-echo'\nimport { Widget } from 'Widget/class/Widget'\nimport { IPusherChatbotDisconnect, IPusherConversionAlert, PusherEvent, RequestTypes } from 'Widget/types'\n\nimport { payloadToWidgetAdapter } from 'lib/adapters/widgetPayloadAdapter'\nimport { pusher } from 'lib/pusher'\nimport * as pusherEvents from 'lib/pusher/constants/pusher-events'\nimport { ICreativesPayload, IDemoCreativePayload, IPromoCreativePayload, IRealDemoCreativePayload } from 'lib/types/payloads/creative'\nimport { IWidgetPayload } from 'lib/types/payloads/widget'\nimport { IFreemiumSetup } from 'lib/types/streamer-freemium/freemium-setup'\n\nexport class Pusher {\n widget: Widget\n channel = ''\n subscribersCount = ref(0)\n\n constructor (widget: Widget) {\n this.widget = widget\n }\n\n init () {\n if (!this.widget.slug) return\n this.channel = `uplify.ads.${this.widget.slug}`\n\n const {\n echo,\n subscribersCount,\n } = pusher(this.widget.slug)\n\n this.subscribersCount.value = subscribersCount\n\n this.listenChannel(echo)\n this.listenPrivateChannel(echo)\n }\n\n private listenChannel (echo: Echo) {\n echo.channel(this.channel)\n .listen(pusherEvents.SUBSCRIPTION_COUNT, (event: {subscription_count: number}) => {\n this.subscribersCount.value = event.subscription_count\n })\n }\n\n private listenPrivateChannel (echo: Echo) {\n echo.private(this.channel)\n .listen(pusherEvents.WIDGET_UPDATED, (event: IWidgetPayload) => {\n this.widget.data.value = payloadToWidgetAdapter(event)\n })\n .listen(pusherEvents.WIDGET_REFRESH, (event: PusherEvent) => {\n if (event.status) {\n window.location.reload()\n }\n })\n .listen(pusherEvents.MANUAL_LAUNCH, async () => {\n await this.widget.creativesLoop.startAd()\n })\n .listen(pusherEvents.AUTO_LAUNCH, (event: PusherEvent) => {\n this.widget.requestLoop.resetNextCall(RequestTypes.BRAND_AWARENESS)\n\n if (event.status) {\n this.widget.streamInfo = event.data.stream\n this.widget.preparer.prepareCreatives(event)\n }\n\n this.checkVersion(event.version)\n })\n .listen(pusherEvents.REFERRAL_LAUNCH, (event: PusherEvent) => {\n this.widget.requestLoop.resetNextCall(RequestTypes.REFERRAL_PROMO)\n if (event.status) {\n this.widget.preparer.preparePromoCreatives(event)\n }\n })\n .listen(pusherEvents.DEMO_REAL_LAUNCH, (event: PusherEvent) => {\n if (event.status) {\n this.widget.preparer.prepareDemoCreatives(event)\n }\n })\n .listen(pusherEvents.DEMO_LAUNCH, (event: PusherEvent) => {\n if (event.status) {\n this.widget.preparer.prepareDemoCreatives(event)\n }\n })\n .listen(pusherEvents.DEMO_REFERRAL_LAUNCH, (event: PusherEvent) => {\n if (event.status) {\n this.widget.preparer.prepareDemoCreatives(event)\n }\n })\n .listen(pusherEvents.FREEMIUM_PREVIEW, (event: PusherEvent) => {\n if (event.status) {\n this.widget.freemium.preview.show()\n }\n })\n .listen(pusherEvents.FREEMIUM_SETUP, (event: PusherEvent) => {\n if (event.status) {\n this.widget.freemium.start(event.data)\n }\n })\n .listen(pusherEvents.CHATBOT_DISCONNECT, (event: PusherEvent) => {\n if (event.status) {\n this.widget.data.value.botEnabled = false\n }\n })\n .listen(pusherEvents.CONVERTION_ALERT, (event: PusherEvent) => {\n if (event.status) {\n this.widget.conversionAlert.showAlert(event.data)\n }\n })\n }\n\n private checkVersion (version: string) {\n if (version !== this.widget.version) {\n if (this.widget.version === null) {\n this.widget.version = version\n }\n else {\n window.location.reload()\n }\n }\n }\n}\n","import { BRAND_AWARENESS_COOLDOWN, BS_CHECK_BEFORE_REQUEST, REFERRAL_PROMO_COOLDOWN, REQUEST_INTERVAL, REQUEST_LOOP_TICK } from 'Widget/constants/delays'\nimport { RequestType, RequestTypes } from 'Widget/types'\n\nimport { api } from 'lib/api'\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ErrorMessage } from 'lib/types/error-message'\n\nimport { wait } from '../utils/wait'\n\nimport { Widget } from './Widget'\n\ninterface IRequest {\n nextCall: number\n cooldown: number\n call: () => void\n}\n\nexport class RequestLoop {\n widget: Widget\n pause = false\n isSafe = true\n requests: Record = {\n [RequestTypes.BRAND_SAFETY]: {\n nextCall: new Date().getTime(),\n cooldown: BRAND_AWARENESS_COOLDOWN,\n call: async () => {\n if (this.widget.pusher.subscribersCount.value > 1) return\n\n if (!this.widget.data.value.bsRequired) {\n return\n }\n\n Logger.debug('BS CHECK')\n\n try {\n const res = await api.widget.checkForBS({ slug: this.widget.slug })\n this.isSafe = res.status\n }\n catch (err) {\n Logger.error(ErrorMessage.WIDGET_BRAND_SAFETY, true, err)\n this.isSafe = false\n }\n },\n },\n [RequestTypes.BRAND_AWARENESS]: {\n nextCall: new Date().getTime(),\n cooldown: BRAND_AWARENESS_COOLDOWN,\n call: () => {\n if (this.widget.pusher.subscribersCount.value > 1) return\n\n if (this.widget.data.value.bsRequired && !this.isSafe) {\n return\n }\n\n Logger.debug('AD REQUEST')\n\n const data = {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n api.widget.fetchBrandAwareness({ slug: this.widget.slug, data })\n },\n },\n [RequestTypes.REFERRAL_PROMO]: {\n nextCall: new Date().getTime() + REFERRAL_PROMO_COOLDOWN,\n cooldown: REFERRAL_PROMO_COOLDOWN,\n call: () => {\n if (this.widget.pusher.subscribersCount.value > 1) return\n\n Logger.debug('REFERRAL REQUEST')\n\n api.widget.fetchReferralPromo({ slug: this.widget.slug })\n },\n },\n }\n\n constructor (widget: Widget) {\n this.widget = widget\n }\n\n async init () {\n this.check(RequestTypes.BRAND_SAFETY)\n\n await wait(BS_CHECK_BEFORE_REQUEST)\n\n setInterval(async () => {\n if (!this.widget.widgetResolutionIsCorrect) return\n if (this.widget.pusher.subscribersCount.value > 1) return\n\n const isCreativesQueueFullfilled = this.widget.creativesLoop.queue.length > 10\n if (isCreativesQueueFullfilled) return\n\n for (const key in this.requests) {\n this.check(key as RequestType)\n }\n }, REQUEST_LOOP_TICK)\n }\n\n resetNextCall (type: RequestType, _coolDown = 0) {\n const coolDown = _coolDown || this.requests[type].cooldown\n this.requests[type].nextCall = new Date().getTime() + coolDown\n }\n\n async check (type: RequestType) {\n const now = new Date().getTime()\n const request = this.requests[type]\n\n if (now > request.nextCall) {\n this.resetNextCall(type)\n this.callRequest(request, type)\n }\n }\n\n async callRequest (request: IRequest, type: RequestType) {\n try {\n await request.call()\n }\n catch (error) {\n this.catchRequestError(error, type)\n }\n }\n\n catchRequestError (error: unknown, type: RequestType) {\n if (typeof error === 'string') {\n Logger.warning(`Failed request for ${type}: ${error}`, false)\n return\n }\n\n if (typeof error === 'object' && error !== null) {\n if ('code' in error) {\n const isRequiremenetsNotMet = error.code === 'ADS_ERRORS_REQUIRES'\n const isNoActiveCampaigns = error.code === 'ADS_ERRORS_EMPTY'\n const isBlocked = error.code === 'ADS_ERRORS_BLOCKED'\n\n // skip unimportant errors\n if (isRequiremenetsNotMet || isNoActiveCampaigns || isBlocked) {\n return\n }\n }\n\n if ('message' in error) {\n Logger.warning(`Failed request for ${type}: ${error.message}`, false, { error })\n }\n else if ('code' in error) {\n Logger.warning(`Failed request for ${type}: ${error.code}`, false, { error })\n }\n\n return\n }\n\n Logger.warning(`Failed request for ${type}: undefined error`, false, { error })\n }\n}\n","import Client from 'lib/api/client'\n\nimport { Api } from './instance'\n\nexport class ScreenshotClient extends Client {\n constructor () {\n super()\n\n delete this.axios.defaults.headers.common['x-uplify-domain']\n this.axios.defaults.headers.post['Content-Type'] = 'application/json'\n }\n}\n\nexport const client = new ScreenshotClient()\n\nexport class ScreenshotApi extends Api {\n static client = client\n static apiUrl = process.env.VUE_APP_SCREENSHOT_API_URL\n}\n","import { Widget } from 'Widget/class/Widget'\n\nimport { ScreenshotApi } from 'lib/api/screenshot-instance'\nimport { Logger } from 'lib/helpers/handleLog'\nimport { ICreative, IDemoCreative, IPromoCreative } from 'lib/types/creative'\nimport { ErrorMessage } from 'lib/types/error-message'\nimport { Platform } from 'lib/types/platform'\n\nimport { SCREENSHOT_DELAY, SCREENSHOT_TIMEOUT } from '../constants/delays'\nimport { wait } from '../utils/wait'\n\nexport class Screenshot {\n widget: Widget\n enabled = false\n private timer: NodeJS.Timeout | null = null\n\n constructor (widget: Widget) {\n this.widget = widget\n }\n\n enable () {\n if (this.enabled) return\n\n this.enabled = true\n\n this.timer = setTimeout(() => {\n this.enabled = false\n }, SCREENSHOT_TIMEOUT)\n }\n\n disable () {\n if (this.timer) {\n clearTimeout(this.timer)\n }\n this.enabled = false\n }\n\n async makeScreenshot (\n creative: ICreative | IDemoCreative | IPromoCreative,\n attempt = 1,\n ) {\n console.log('enabled', this.enabled)\n console.log('creative.adSet?.make_screenshots', creative.adSet?.make_screenshots)\n if (!this.enabled) {\n if (!creative.adSet?.make_screenshots) {\n return\n }\n }\n\n if (this.widget.pusher.subscribersCount.value > 1) return\n\n if (!creative || !this.widget.data) return\n\n await wait(SCREENSHOT_DELAY)\n\n const data = this.getScreenshotData(creative)\n\n if (!data) return\n\n try {\n await ScreenshotApi.post(\n this.widget.data.value.platform,\n JSON.stringify(data),\n { showMessage: false },\n )\n Logger.debug(`Make screenshot for: ${creative.slug}`)\n }\n catch (err) {\n if (attempt > 0) {\n setTimeout(() => {\n this.makeScreenshot(creative, attempt - 1)\n }, 45 * 1000)\n }\n else {\n Logger.critical(ErrorMessage.WIDGET_MAKE_SCREENSHOT, false, err)\n }\n }\n }\n\n private getScreenshotData (creative: ICreative | IDemoCreative | IPromoCreative) {\n const widgetData = this.widget.data.value\n\n if (widgetData.platform === Platform.YOUTUBE) {\n return {\n slug: this.widget.streamInfo?.id,\n ad: creative.slug,\n impression: creative.impressionSlug,\n }\n }\n\n switch (widgetData.platform) {\n case Platform.TWITCH:\n case Platform.TROVO:\n case Platform.VK_PLAY:\n return {\n nickname: widgetData[widgetData.platform]?.nickname,\n ad: creative.slug,\n impression: creative.impressionSlug,\n }\n default:\n return null\n }\n }\n}\n","import { ref } from 'vue'\nimport { Freemium } from 'views/Widget/class/Freemium'\nimport { ConvertionAlert } from 'Widget/class/ConvertionAlert'\nimport { CreativesLoop } from 'Widget/class/CreativesLoop'\nimport { CreativesManager } from 'Widget/class/CreativesManager'\nimport { Preparer } from 'Widget/class/Preparer'\nimport { Pusher } from 'Widget/class/Pusher'\nimport { RequestLoop } from 'Widget/class/RequestLoop'\nimport { Screenshot } from 'Widget/class/Screenshot'\nimport { defaultWidget } from 'Widget/constants/default-widget'\nimport { BS_CHECK_BEFORE_REQUEST, PRIMAL_TIMER_TIMEOUT } from 'Widget/constants/delays'\nimport { wait } from 'Widget/utils/wait'\n\nimport { vm } from '@/main'\nimport { api } from 'lib/api'\nimport { Logger } from 'lib/helpers/handleLog'\nimport { IStreamInfo } from 'lib/types/creative'\nimport { AdvertisingMode, IWidget } from 'lib/types/widget'\n\nexport class Widget {\n slug: string\n pusher: Pusher\n version: string | null = null\n data = ref(defaultWidget)\n isLoaded = ref(false)\n isDebug = ref(false)\n requestLoop = new RequestLoop(this)\n creativesLoop = new CreativesLoop(this)\n creativesManager = new CreativesManager(this)\n freemium = new Freemium(this)\n preparer = new Preparer(this)\n conversionAlert = new ConvertionAlert(this)\n screenshot = new Screenshot(this)\n streamInfo: IStreamInfo | null = null\n\n constructor (slug = '') {\n this.slug = slug\n if (slug) {\n this.init()\n }\n this.pusher = new Pusher(this)\n }\n\n get isManual () {\n return this.data.value.advertising.mode === AdvertisingMode.MANUAL\n }\n\n get isStreamerDeactivated () {\n return this.data.value.streamer?.deleted || this.data.value.streamer?.deleted_request\n }\n\n get widgetResolutionIsCorrect () {\n if (window.innerWidth < 1200 || window.innerHeight < 700) {\n return false\n }\n return true\n }\n\n async init (): Promise {\n Logger.debug('WIDGET INIT')\n\n // @ts-ignore\n window?.Beamer?.destroy()\n\n this.setIsDebug()\n await this.activateWidget()\n await this.fetchWidget()\n // this.configureRollbar(this.data.value)\n\n if (this.isStreamerDeactivated) {\n return\n }\n\n this.pusher.init()\n this.isLoaded.value = true\n this.freemium.init()\n this.creativesLoop.init()\n\n await wait(PRIMAL_TIMER_TIMEOUT - BS_CHECK_BEFORE_REQUEST)\n\n this.requestLoop.init()\n this.screenshot.enable()\n }\n\n setIsDebug () {\n const url = new URL(window.location.href)\n this.isDebug.value = !!url.searchParams.get('debug')\n }\n\n async activateWidget (): Promise {\n if (!this.slug) return\n try {\n await api.widget.enable({ slug: this.slug })\n }\n catch (error) {\n Logger.warning('Widget activating error', false, { slug: this.slug, error })\n\n // @ts-ignore\n if (error?.origin?.response?.status !== 404) {\n setTimeout(() => {\n this.activateWidget()\n }, 10000)\n }\n else {\n throw new Error(`Incorrect widget slug: ${this.slug}`)\n }\n }\n }\n\n async fetchWidget (): Promise {\n if (!this.slug) return\n try {\n this.data.value = await api.widget.fetch({ slug: this.slug })\n }\n catch (err) {\n Logger.warning('Widget fetching error', false, { slug: this.slug, err })\n }\n }\n\n configureRollbar (widget: IWidget) {\n try {\n vm?.$rollbar.configure({\n payload: {\n widget: {\n slug: widget.slug,\n platform: widget.platform,\n enabled: widget.enabled,\n nickname: widget.streamer?.name,\n domain: widget.streamer?.domain,\n },\n },\n })\n }\n catch (err) {\n // eslint-disable-next-line no-console\n console.error('Error configuring Rollbar')\n }\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loop = exports.conditional = exports.parse = void 0;\n\nvar parse = function parse(stream, schema) {\n var result = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : result;\n\n if (Array.isArray(schema)) {\n schema.forEach(function (partSchema) {\n return parse(stream, partSchema, result, parent);\n });\n } else if (typeof schema === 'function') {\n schema(stream, result, parent, parse);\n } else {\n var key = Object.keys(schema)[0];\n\n if (Array.isArray(schema[key])) {\n parent[key] = {};\n parse(stream, schema[key], result, parent[key]);\n } else {\n parent[key] = schema[key](stream, result, parent, parse);\n }\n }\n\n return result;\n};\n\nexports.parse = parse;\n\nvar conditional = function conditional(schema, conditionFunc) {\n return function (stream, result, parent, parse) {\n if (conditionFunc(stream, result, parent)) {\n parse(stream, schema, result, parent);\n }\n };\n};\n\nexports.conditional = conditional;\n\nvar loop = function loop(schema, continueFunc) {\n return function (stream, result, parent, parse) {\n var arr = [];\n var lastStreamPos = stream.pos;\n\n while (continueFunc(stream, result, parent)) {\n var newParent = {};\n parse(stream, schema, result, newParent); // cases when whole file is parsed but no termination is there and stream position is not getting updated as well\n // it falls into infinite recursion, null check to avoid the same\n\n if (stream.pos === lastStreamPos) {\n break;\n }\n\n lastStreamPos = stream.pos;\n arr.push(newParent);\n }\n\n return arr;\n };\n};\n\nexports.loop = loop;","'use strict'\n\n/**\n * Font RegExp helpers.\n */\n\nconst weights = 'bold|bolder|lighter|[1-9]00'\nconst styles = 'italic|oblique'\nconst variants = 'small-caps'\nconst stretches = 'ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded'\nconst units = 'px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q'\nconst string = '\\'([^\\']+)\\'|\"([^\"]+)\"|[\\\\w\\\\s-]+'\n\n// [ [ <โ€˜font-styleโ€™> || || <โ€˜font-weightโ€™> || <โ€˜font-stretchโ€™> ]?\n// <โ€˜font-sizeโ€™> [ / <โ€˜line-heightโ€™> ]? <โ€˜font-familyโ€™> ]\n// https://drafts.csswg.org/css-fonts-3/#font-prop\nconst weightRe = new RegExp(`(${weights}) +`, 'i')\nconst styleRe = new RegExp(`(${styles}) +`, 'i')\nconst variantRe = new RegExp(`(${variants}) +`, 'i')\nconst stretchRe = new RegExp(`(${stretches}) +`, 'i')\nconst sizeFamilyRe = new RegExp(\n `([\\\\d\\\\.]+)(${units}) *((?:${string})( *, *(?:${string}))*)`)\n\n/**\n * Cache font parsing.\n */\n\nconst cache = {}\n\nconst defaultHeight = 16 // pt, common browser default\n\n/**\n * Parse font `str`.\n *\n * @param {String} str\n * @return {Object} Parsed font. `size` is in device units. `unit` is the unit\n * appearing in the input string.\n * @api private\n */\n\nmodule.exports = str => {\n // Cached\n if (cache[str]) return cache[str]\n\n // Try for required properties first.\n const sizeFamily = sizeFamilyRe.exec(str)\n if (!sizeFamily) return // invalid\n\n // Default values and required properties\n const font = {\n weight: 'normal',\n style: 'normal',\n stretch: 'normal',\n variant: 'normal',\n size: parseFloat(sizeFamily[1]),\n unit: sizeFamily[2],\n family: sizeFamily[3].replace(/[\"']/g, '').replace(/ *, */g, ',')\n }\n\n // Optional, unordered properties.\n let weight, style, variant, stretch\n // Stop search at `sizeFamily.index`\n const substr = str.substring(0, sizeFamily.index)\n if ((weight = weightRe.exec(substr))) font.weight = weight[1]\n if ((style = styleRe.exec(substr))) font.style = style[1]\n if ((variant = variantRe.exec(substr))) font.variant = variant[1]\n if ((stretch = stretchRe.exec(substr))) font.stretch = stretch[1]\n\n // Convert to device units. (`font.unit` is the original unit)\n // TODO: ch, ex\n switch (font.unit) {\n case 'pt':\n font.size /= 0.75\n break\n case 'pc':\n font.size *= 16\n break\n case 'in':\n font.size *= 96\n break\n case 'cm':\n font.size *= 96.0 / 2.54\n break\n case 'mm':\n font.size *= 96.0 / 25.4\n break\n case '%':\n // TODO disabled because existing unit tests assume 100\n // font.size *= defaultHeight / 100 / 0.75\n break\n case 'em':\n case 'rem':\n font.size *= defaultHeight / 0.75\n break\n case 'q':\n font.size *= 96 / 25.4 / 4\n break\n }\n\n return (cache[str] = font)\n}\n","export enum Platform {\n YOUTUBE = 'youtube',\n TWITCH = 'twitch',\n TROVO = 'trovo',\n VK_PLAY = 'vkplay',\n}\n\nexport type PlatformType = 'twitch' | 'youtube' | 'trovo' | 'vkplay'\n"],"sourceRoot":""}