UNPKG

1.59 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 815fd649e296aad33a58","webpack:///av-core-min.js","webpack:///./node_modules/underscore/modules/index-all.js","webpack:///./node_modules/underscore/modules/_setup.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/underscore/modules/keys.js","webpack:///./node_modules/babel-runtime/core-js/promise.js","webpack:///./node_modules/underscore/modules/_tagTester.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/underscore/modules/_cb.js","webpack:///./node_modules/underscore/modules/restArguments.js","webpack:///./node_modules/underscore/modules/underscore.js","webpack:///./node_modules/underscore/modules/_isArrayLike.js","webpack:///./src/request.js","webpack:///./node_modules/underscore/modules/isFunction.js","webpack:///./node_modules/underscore/modules/_getLength.js","webpack:///./src/utils/index.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/babel-runtime/core-js/json/stringify.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/underscore/modules/_has.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/underscore/modules/isObject.js","webpack:///./node_modules/underscore/modules/isArray.js","webpack:///./node_modules/underscore/modules/each.js","webpack:///./src/error.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/underscore/modules/values.js","webpack:///./node_modules/underscore/modules/_flatten.js","webpack:///./node_modules/underscore/modules/map.js","webpack:///./src/av.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./src/adapter.js","webpack:///./node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/underscore/modules/_stringTagBug.js","webpack:///./node_modules/underscore/modules/allKeys.js","webpack:///./node_modules/underscore/modules/_toPath.js","webpack:///./node_modules/underscore/modules/_optimizeCb.js","webpack:///./node_modules/underscore/modules/filter.js","webpack:///./node_modules/underscore/modules/contains.js","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/underscore/modules/matcher.js","webpack:///./node_modules/underscore/modules/partial.js","webpack:///./node_modules/underscore/modules/_group.js","webpack:///./src/utils/ajax.js","webpack:///./node_modules/babel-runtime/helpers/typeof.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/core-js/library/modules/_new-promise-capability.js","webpack:///./node_modules/underscore/modules/index.js","webpack:///./node_modules/underscore/modules/isString.js","webpack:///./node_modules/underscore/modules/isDataView.js","webpack:///./node_modules/underscore/modules/isArguments.js","webpack:///./node_modules/underscore/modules/_getByteLength.js","webpack:///./node_modules/underscore/modules/_methodFingerprint.js","webpack:///./node_modules/underscore/modules/_createAssigner.js","webpack:///./node_modules/underscore/modules/extendOwn.js","webpack:///./node_modules/underscore/modules/_deepGet.js","webpack:///./node_modules/underscore/modules/identity.js","webpack:///./node_modules/underscore/modules/property.js","webpack:///./node_modules/underscore/modules/now.js","webpack:///./node_modules/underscore/modules/negate.js","webpack:///./node_modules/underscore/modules/findIndex.js","webpack:///./node_modules/underscore/modules/pluck.js","webpack:///./node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/babel-runtime/core-js/object/define-property.js","webpack:///./node_modules/core-js/library/modules/_wks-ext.js","webpack:///./node_modules/core-js/library/modules/_wks-define.js","webpack:///./node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/core-js/library/modules/_object-gopd.js","webpack:///./node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/library/modules/_species-constructor.js","webpack:///./node_modules/core-js/library/modules/_task.js","webpack:///./node_modules/core-js/library/modules/_perform.js","webpack:///./node_modules/core-js/library/modules/_promise-resolve.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/underscore/modules/isUndefined.js","webpack:///./node_modules/underscore/modules/isBoolean.js","webpack:///./node_modules/underscore/modules/isNumber.js","webpack:///./node_modules/underscore/modules/isSymbol.js","webpack:///./node_modules/underscore/modules/isArrayBuffer.js","webpack:///./node_modules/underscore/modules/isNaN.js","webpack:///./node_modules/underscore/modules/isTypedArray.js","webpack:///./node_modules/underscore/modules/constant.js","webpack:///./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///./node_modules/underscore/modules/_shallowProperty.js","webpack:///./node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///./node_modules/underscore/modules/isMatch.js","webpack:///./node_modules/underscore/modules/invert.js","webpack:///./node_modules/underscore/modules/functions.js","webpack:///./node_modules/underscore/modules/extend.js","webpack:///./node_modules/underscore/modules/defaults.js","webpack:///./node_modules/underscore/modules/_baseCreate.js","webpack:///./node_modules/underscore/modules/clone.js","webpack:///./node_modules/underscore/modules/get.js","webpack:///./node_modules/underscore/modules/toPath.js","webpack:///./node_modules/underscore/modules/_baseIteratee.js","webpack:///./node_modules/underscore/modules/iteratee.js","webpack:///./node_modules/underscore/modules/noop.js","webpack:///./node_modules/underscore/modules/random.js","webpack:///./node_modules/underscore/modules/_createEscaper.js","webpack:///./node_modules/underscore/modules/_escapeMap.js","webpack:///./node_modules/underscore/modules/templateSettings.js","webpack:///./node_modules/underscore/modules/_executeBound.js","webpack:///./node_modules/underscore/modules/bind.js","webpack:///./node_modules/underscore/modules/delay.js","webpack:///./node_modules/underscore/modules/before.js","webpack:///./node_modules/underscore/modules/findKey.js","webpack:///./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///./node_modules/underscore/modules/findLastIndex.js","webpack:///./node_modules/underscore/modules/sortedIndex.js","webpack:///./node_modules/underscore/modules/indexOf.js","webpack:///./node_modules/underscore/modules/_createIndexFinder.js","webpack:///./node_modules/underscore/modules/find.js","webpack:///./node_modules/underscore/modules/_createReduce.js","webpack:///./node_modules/underscore/modules/max.js","webpack:///./node_modules/underscore/modules/sample.js","webpack:///./node_modules/underscore/modules/pick.js","webpack:///./node_modules/underscore/modules/initial.js","webpack:///./node_modules/underscore/modules/rest.js","webpack:///./node_modules/underscore/modules/difference.js","webpack:///./node_modules/underscore/modules/uniq.js","webpack:///./node_modules/underscore/modules/unzip.js","webpack:///./node_modules/underscore/modules/_chainResult.js","webpack:///./node_modules/babel-runtime/core-js/object/keys.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack:///./src/version.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./src/localstorage.js","webpack:///./src/cache.js","webpack:///./node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/core-js/library/modules/_object-gopn.js","webpack:///./node_modules/babel-runtime/core-js/get-iterator.js","webpack:///./node_modules/charenc/charenc.js","webpack:///./src/entry/core.js","webpack:///./src/index.js","webpack:///./node_modules/core-js/library/fn/promise.js","webpack:///./node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/core-js/library/modules/es6.promise.js","webpack:///./node_modules/core-js/library/modules/_an-instance.js","webpack:///./node_modules/core-js/library/modules/_for-of.js","webpack:///./node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/core-js/library/modules/_invoke.js","webpack:///./node_modules/core-js/library/modules/_microtask.js","webpack:///./node_modules/core-js/library/modules/_user-agent.js","webpack:///./node_modules/core-js/library/modules/_redefine-all.js","webpack:///./node_modules/core-js/library/modules/_set-species.js","webpack:///./node_modules/core-js/library/modules/_iter-detect.js","webpack:///./node_modules/core-js/library/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/library/modules/es7.promise.try.js","webpack:///./node_modules/underscore/modules/index-default.js","webpack:///./node_modules/underscore/modules/isNull.js","webpack:///./node_modules/underscore/modules/isElement.js","webpack:///./node_modules/underscore/modules/isDate.js","webpack:///./node_modules/underscore/modules/isRegExp.js","webpack:///./node_modules/underscore/modules/isError.js","webpack:///./node_modules/underscore/modules/_hasObjectTag.js","webpack:///./node_modules/underscore/modules/isFinite.js","webpack:///./node_modules/underscore/modules/_isBufferLike.js","webpack:///./node_modules/underscore/modules/isEmpty.js","webpack:///./node_modules/underscore/modules/isEqual.js","webpack:///./node_modules/underscore/modules/_toBufferView.js","webpack:///./node_modules/underscore/modules/isMap.js","webpack:///./node_modules/underscore/modules/isWeakMap.js","webpack:///./node_modules/underscore/modules/isSet.js","webpack:///./node_modules/underscore/modules/isWeakSet.js","webpack:///./node_modules/underscore/modules/pairs.js","webpack:///./node_modules/underscore/modules/create.js","webpack:///./node_modules/underscore/modules/tap.js","webpack:///./node_modules/underscore/modules/has.js","webpack:///./node_modules/underscore/modules/mapObject.js","webpack:///./node_modules/underscore/modules/propertyOf.js","webpack:///./node_modules/underscore/modules/times.js","webpack:///./node_modules/underscore/modules/escape.js","webpack:///./node_modules/underscore/modules/unescape.js","webpack:///./node_modules/underscore/modules/_unescapeMap.js","webpack:///./node_modules/underscore/modules/template.js","webpack:///./node_modules/underscore/modules/result.js","webpack:///./node_modules/underscore/modules/uniqueId.js","webpack:///./node_modules/underscore/modules/chain.js","webpack:///./node_modules/underscore/modules/bindAll.js","webpack:///./node_modules/underscore/modules/memoize.js","webpack:///./node_modules/underscore/modules/defer.js","webpack:///./node_modules/underscore/modules/throttle.js","webpack:///./node_modules/underscore/modules/debounce.js","webpack:///./node_modules/underscore/modules/wrap.js","webpack:///./node_modules/underscore/modules/compose.js","webpack:///./node_modules/underscore/modules/after.js","webpack:///./node_modules/underscore/modules/once.js","webpack:///./node_modules/underscore/modules/lastIndexOf.js","webpack:///./node_modules/underscore/modules/findWhere.js","webpack:///./node_modules/underscore/modules/reduce.js","webpack:///./node_modules/underscore/modules/reduceRight.js","webpack:///./node_modules/underscore/modules/reject.js","webpack:///./node_modules/underscore/modules/every.js","webpack:///./node_modules/underscore/modules/some.js","webpack:///./node_modules/underscore/modules/invoke.js","webpack:///./node_modules/underscore/modules/where.js","webpack:///./node_modules/underscore/modules/min.js","webpack:///./node_modules/underscore/modules/shuffle.js","webpack:///./node_modules/underscore/modules/sortBy.js","webpack:///./node_modules/underscore/modules/groupBy.js","webpack:///./node_modules/underscore/modules/indexBy.js","webpack:///./node_modules/underscore/modules/countBy.js","webpack:///./node_modules/underscore/modules/partition.js","webpack:///./node_modules/underscore/modules/toArray.js","webpack:///./node_modules/underscore/modules/size.js","webpack:///./node_modules/underscore/modules/_keyInObj.js","webpack:///./node_modules/underscore/modules/omit.js","webpack:///./node_modules/underscore/modules/first.js","webpack:///./node_modules/underscore/modules/last.js","webpack:///./node_modules/underscore/modules/compact.js","webpack:///./node_modules/underscore/modules/flatten.js","webpack:///./node_modules/underscore/modules/without.js","webpack:///./node_modules/underscore/modules/union.js","webpack:///./node_modules/underscore/modules/intersection.js","webpack:///./node_modules/underscore/modules/zip.js","webpack:///./node_modules/underscore/modules/object.js","webpack:///./node_modules/underscore/modules/range.js","webpack:///./node_modules/underscore/modules/chunk.js","webpack:///./node_modules/underscore/modules/mixin.js","webpack:///./node_modules/underscore/modules/underscore-array-methods.js","webpack:///./node_modules/core-js/library/fn/json/stringify.js","webpack:///./node_modules/core-js/library/fn/object/keys.js","webpack:///./node_modules/core-js/library/modules/es6.object.keys.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/debug/src/common.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/core-js/library/fn/object/get-prototype-of.js","webpack:///./node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack:///./src/init.js","webpack:///./node_modules/core-js/library/fn/object/define-property.js","webpack:///./node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///./src/app-router.js","webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack:///./node_modules/core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/babel-runtime/core-js/symbol.js","webpack:///./node_modules/core-js/library/fn/symbol/index.js","webpack:///./node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/core-js/library/modules/_enum-keys.js","webpack:///./node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/promise-timeout/index.js","webpack:///./src/event.js","webpack:///./src/geopoint.js","webpack:///./src/acl.js","webpack:///./src/op.js","webpack:///./src/relation.js","webpack:///./src/file.js","webpack:///./src/uploader/cos.js","webpack:///./src/uploader/qiniu.js","webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/babel-runtime/helpers/inherits.js","webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack:///./node_modules/core-js/library/fn/object/set-prototype-of.js","webpack:///./node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/library/modules/_set-proto.js","webpack:///./node_modules/babel-runtime/core-js/object/create.js","webpack:///./node_modules/core-js/library/fn/object/create.js","webpack:///./node_modules/core-js/library/modules/es6.object.create.js","webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js","webpack:///./node_modules/babel-runtime/helpers/createClass.js","webpack:///./node_modules/core-js/library/fn/get-iterator.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator.js","webpack:///./src/utils/btoa.js","webpack:///./src/uploader/s3.js","webpack:///./node_modules/md5/md5.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./src/utils/parse-base64-browser.js","webpack:///./src/object.js","webpack:///./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/babel-runtime/helpers/slicedToArray.js","webpack:///./node_modules/babel-runtime/core-js/is-iterable.js","webpack:///./node_modules/core-js/library/fn/is-iterable.js","webpack:///./node_modules/core-js/library/modules/core.is-iterable.js","webpack:///./src/role.js","webpack:///./src/user.js","webpack:///./node_modules/babel-runtime/helpers/defineProperty.js","webpack:///./src/query.js","webpack:///./src/live-query.js","webpack:///./src/captcha.js","webpack:///./src/cloudfunction.js","webpack:///./src/push.js","webpack:///./src/status.js","webpack:///./src/search.js","webpack:///./src/insight.js","webpack:///./src/friendship.js","webpack:///./src/conversation.js","webpack:///./src/leaderboard.js"],"names":["root","factory","exports","module","define","amd","self","this","__webpack_require__","moduleId","installedModules","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","VERSION","global","Function","ArrayProto","Array","ObjProto","SymbolProto","Symbol","push","slice","toString","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","core","version","__e","obj","key","tagTester","tag","window","__g","store","uid","USE_SYMBOL","cb","value","context","argCount","iteratee","restArguments","func","startIndex","length","max","arguments","rest","index","args","apply","_","_wrapped","valueOf","toJSON","String","_promise","_promise2","default","require","md5","_require","extend","AV","_require2","getSessionToken","ajax","sign","isMasterKey","now","Date","getTime","signature","setAppKey","headers","signKey","applicationKey","setHeaders","authOptions","applicationId","useMasterKey","_config","masterKey","console","warn","hookKey","production","_sharedConfig","userAgent","resolve","then","sessionToken","disableCurrentUser","User","currentAsync","currentUser","_sessionToken","createApiUrl","service","path","apiURL","serverURLs","Error","charAt","request","method","query","data","_appRouter","refresh","timeout","requestTimeout","url","catch","error","errorJSON","code","message","responseText","response","JSON","parse","e","rawMessage","keepErrorRawMessage","statusCode","err","_request","route","className","objectId","_fetchWhenSave","_where","toLowerCase","isFunction","nodelist","document","childNodes","Int8Array","_interopRequireDefault","_getPrototypeOf","_getPrototypeOf2","isNullOrUndefined","x","isNull","isUndefined","ensureArray","target","undefined","transformFetchOptions","include","includeACL","fetchOptions","join","returnACL","user","tap","interceptor","EmptyConstructor","inherits","parent","protoProps","staticProps","child","constructor","__super__","parseDate","iso8601","setValue","segs","split","lastSeg","pop","currentTarget","forEach","seg","findValue","firstSeg","isPlainObject","isObject","continueWhile","predicate","asyncFunction","it","TypeError","ctx","hide","has","$export","type","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","C","a","b","virtual","R","U","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","createDesc","IObject","defined","each","_keys","AVError","OTHER_CAUSE","INTERNAL_SERVER_ERROR","CONNECTION_FAILED","OBJECT_NOT_FOUND","INVALID_QUERY","INVALID_CLASS_NAME","MISSING_OBJECT_ID","INVALID_KEY_NAME","INVALID_POINTER","INVALID_JSON","COMMAND_UNAVAILABLE","NOT_INITIALIZED","INCORRECT_TYPE","INVALID_CHANNEL_NAME","PUSH_MISCONFIGURED","OBJECT_TOO_LARGE","OPERATION_FORBIDDEN","CACHE_MISS","INVALID_NESTED_KEY","INVALID_FILE_NAME","INVALID_ACL","TIMEOUT","INVALID_EMAIL_ADDRESS","MISSING_CONTENT_TYPE","MISSING_CONTENT_LENGTH","INVALID_CONTENT_LENGTH","FILE_TOO_LARGE","FILE_SAVE_ERROR","FILE_DELETE_ERROR","DUPLICATE_VALUE","INVALID_ROLE_NAME","EXCEEDED_QUOTA","SCRIPT_FAILED","VALIDATION_ERROR","INVALID_IMAGE_DATA","UNSAVED_FILE_ERROR","INVALID_PUSH_TIME_ERROR","USERNAME_MISSING","PASSWORD_MISSING","USERNAME_TAKEN","EMAIL_TAKEN","EMAIL_MISSING","EMAIL_NOT_FOUND","SESSION_MISSING","MUST_CREATE_USER_THROUGH_SIGNUP","ACCOUNT_ALREADY_LINKED","LINKED_ID_MISSING","INVALID_LINKED_SESSION","UNSUPPORTED_SERVICE","X_DOMAIN_REQUEST","values","flatten","input","depth","strict","output","concat","Infinity","idx","j","len","map","results","currentKey","_stringify","_stringify2","_keys2","uuid","debug","setAdapters","adapterManager","realtime","initialUserAgent","liveQueryRealtime","on","platformInfo","ua","comments","extra","_getAVPath","isString","substring","_installationId","_getInstallationId","localStorage","getItemAsync","setItemAsync","_subscriptionId","_refreshSubscriptionId","subscriptionId","_getSubscriptionId","_parseDate","_extend","classProps","_encode","seenObjects","disallowObjects","full","_hasData","_toFullJSON","_toPointer","ACL","isDate","__type","iso","GeoPoint","isRegExp","Relation","Op","File","id","mapObject","v","k","_decode","__op","pointer","_create","clone","_finishFetch","latitude","longitude","relation","targetClassName","file","parseJSON","text","stringify","_encodeObjectOrArray","encodeAVObject","_arrayEach","_traverse","seen","indexOf","attributes","newChild","_each","_objectEach","callback","enable","namespaces","disable","_typeof","iterator","useColors","process","__nwjs","navigator","match","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","RegExp","$1","formatArgs","namespace","humanize","diff","color","splice","lastC","replace","log","_console","save","storage","setItem","removeItem","load","r","getItem","env","DEBUG","colors","formatters","EventEmitter","AdapterManager","_adapters","getAdapter","adapter","newAdapters","emit","bind","aFunction","fn","that","exec","hasStringTagBug","isIE11","Map","allKeys","toPath","optimizeCb","collection","accumulator","filter","list","contains","item","fromIndex","guard","$at","iterated","_t","_i","point","done","bitmap","writable","$keys","enumBugKeys","px","random","def","TAG","stat","Iterators","TO_STRING_TAG","DOMIterables","NAME","Collection","proto","matcher","attrs","partial","boundArgs","placeholder","bound","position","group","behavior","partition","result","_typeof2","_typeof3","debugRequest","debugRequestError","requestsCount","time","onprogress","queryString","encodeURIComponent","qs","count","promise","status","header","ok","enabled","_iterator","_iterator2","_symbol","_symbol2","ceil","floor","is","createElement","val","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","appendChild","src","contentWindow","open","write","lt","close","Properties","shared","mode","copyright","cof","ARG","tryGet","T","callee","PromiseCapability","reject","$$resolve","$$reject","ie10IsDataView","getInt8","buffer","isDataView","isArguments","ie11fingerprint","methods","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","defaults","deepGet","identity","negate","pluck","fails","KEY","exp","LIBRARY","wksExt","$Symbol","pIE","toIObject","gOPD","getOwnPropertyDescriptor","redefine","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","returnThis","Base","Constructor","next","DEFAULT","IS_SET","FORCED","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","arrayIndexOf","names","toInteger","min","toObject","ObjectProto","classof","getIteratorMethod","SPECIES","D","defer","channel","port","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","nextTick","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","set","clear","newPromiseCapability","promiseCapability","g","eval","isBoolean","isTypedArray","typedArrayPattern","test","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","emulatedSet","hash","collectNonEnumProps","nonEnumIdx","prop","isMatch","invert","functions","sort","ctor","baseCreate","Ctor","defaultValue","baseIteratee","noop","createEscaper","escaper","testRegexp","replaceRegexp","string","templateSettings","evaluate","interpolate","escape","executeBound","sourceFunc","boundFunc","callingContext","callArgs","wait","before","times","memo","findKey","createPredicateIndexFinder","dir","array","sortedIndex","low","high","mid","createIndexFinder","predicateFind","find","keyFinder","createReduce","reducer","initial","computed","lastComputed","sample","last","rand","temp","uniq","isSorted","unzip","chainResult","instance","_chain","chain","v4","options","buf","offset","rnds","rng","ii","bytesToUuid","Events","EE","once","_events","_eventsCount","prefix","__proto__","eventNames","events","getOwnPropertySymbols","listeners","exists","evt","available","ee","a1","a2","a3","a4","a5","removeListener","removeAllListeners","off","addListener","setMaxListeners","prefixed","syncApiNames","async","apiName","removeAsync","removeItemAsync","getCacheData","cacheData","expiredAt","getAsync","cache","setAsync","ttl","hiddenKeys","getOwnPropertyNames","charenc","utf8","stringToBytes","str","bin","unescape","bytesToString","bytes","decodeURIComponent","charCodeAt","fromCharCode","Promise","Cache","Conversation","TO_STRING","pos","descriptor","getKeys","defineProperties","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","addToUnscopables","step","_k","Arguments","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","anInstance","forOf","speciesConstructor","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","isNode","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","_n","_c","_v","_s","reaction","exited","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_d","_w","$resolve","wrapper","executor","onFulfilled","onRejected","capability","iter","all","iterable","remaining","$index","alreadyCalled","race","forbiddenField","isArrayIter","getIterFn","BREAK","RETURN","iterFn","ret","un","macrotask","Observer","MutationObserver","WebKitMutationObserver","head","flush","standalone","toggle","node","createTextNode","observe","characterData","safe","DESCRIPTORS","SAFE_CLOSING","riter","from","skipClosing","arr","onFinally","callbackfn","isElement","nodeType","parseFloat","isEmpty","eq","aStack","bStack","deepEq","tagDataView","areArrays","byteOffset","aCtor","bCtor","isEqual","toBufferView","bufferSource","Uint8Array","pairs","props","propertyOf","accum","escapeChar","escapes","template","settings","oldSettings","noMatch","escapeRegExp","argument","variable","bareIdentifier","render","fallback","uniqueId","idCounter","memoize","hasher","address","throttle","previous","later","leading","throttled","_now","clearTimeout","trailing","cancel","debounce","immediate","passed","debounced","_args","wrap","compose","start","after","findWhere","every","some","contextPath","where","shuffle","sortBy","criteria","left","right","pass","toArray","reStrSymbol","size","keyInObj","first","compact","Boolean","otherArrays","arrays","intersection","argsLength","range","stop","chunk","mixin","$JSON","getRandomValues","crypto","msCrypto","rnds8","bth","byteToHex","substr","setup","selectColor","createDebug","abs","_len","_key","curr","Number","ms","prevTime","prev","coerce","unshift","format","formatter","destroy","init","instances","delimiter","skips","stack","y","w","h","fmtShort","msAbs","round","fmtLong","plural","isPlural","long","$getPrototypeOf","getDefaultServerURLs","appId","isCNApp","stats","engine","api","rtm","_defineProperty","_defineProperty2","AppRouter","fillServerURLs","_disableAppRouter","_initialized","appKey","serverURL","setProduction","disableAppRouter","_setServerURLs","server","RTMRouter","urls","setServerURL","setServerURLs","setRequestTimeout","initialize","$Object","desc","lockedUntil","disabled","lock","servers","push_server","stats_server","engine_server","api_server","META","$fails","wks","wksDefine","enumKeys","gOPNExt","$GOPD","$GOPS","$DP","gOPN","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","fastKey","getWeak","onFreeze","meta","NEED","gOPS","getSymbols","symbols","arg","windowNames","getWindowNames","TimeoutError","timeoutMillis","eventSplitter","calls","tail","_callbacks","shift","trigger","unbind","arg1","arg2","_validate","isNumber","__defineGetter__","__defineSetter__","_latitude","_longitude","current","geolocation","getCurrentPosition","location","coords","radiansTo","d2r","PI","lat1rad","long1rad","lat2rad","long2rad","deltaLat","deltaLong","sinDeltaLatDiv2","sin","sinDeltaLongDiv2","cos","asin","sqrt","kilometersTo","milesTo","permissionsById","setReadAccess","setWriteAccess","accessList","userId","allowed","permission","_setAccess","accessType","Role","getName","permissions","_getAccess","getReadAccess","getWriteAccess","setPublicReadAccess","getPublicReadAccess","setPublicWriteAccess","getPublicWriteAccess","getRoleReadAccess","role","getRoleWriteAccess","setRoleReadAccess","setRoleWriteAccess","_initialize","_opDecoderMap","_registerDecoder","opName","decoder","json","op","ops","nextOp","_mergeWithPrevious","Set","_value","_estimate","oldValue","_UNSET","Unset","Increment","amount","_amount","BitAnd","BitOr","BitXor","Add","objects","_objects","AddUnique","newValue","matchingObj","anObj","Remove","union","difference","other","adds","removes","_targetClassName","pointerToId","relationsToAdd","relationsToRemove","added","removed","idToPointer","pointers","newAdd","newRemove","newRelation","reverseQuery","parentClass","relationKey","Query","equalTo","_ensureParentAndKey","add","change","remove","targetClass","_getSubclass","_defaultParams","redirectClassNameForKey","_addCondition","qiniu","s3","AVRequest","parseBase64","extname","b64Digit","number","encodeBase64","chunks","b1","b2","b3","has2","has3","mimeType","metaData","base64","_extName","_data","_uploadHeaders","blob","uri","Blob","owner","withURL","__source","createWithoutData","_operations","toFullJSON","holder","getACL","_acl","setACL","acl","attrName","setUploadHeader","attr","thumbnailURL","width","height","quality","scaleToFit","fmt","ownerId","_fileToken","extName","keep_file_name","keepFileName","mime_type","_previousSave","uploadInfo","_token","token","_options","direction","provider","_callback","success","fetch","bucket","saveOptions","upload_url","fileFormData","field","_bucket","upload","uptoken","urlSafeBase64","btoa","ch","isBlob","_possibleConstructorReturn2","_possibleConstructorReturn3","_inherits2","_inherits3","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_getIterator2","_getIterator3","CHUNK_SIZE","ShardUploader","uploadedChunks","uploadURL","baseURL","upToken","uploaded","onProgress","loaded","total","percent","Authorization","res","uploadId","partNumber","etag","parts","getUploadId","uploadPart","getChunk","part","stopUpload","fname","BlobUploader","_ShardUploader","ReferenceError","_setPrototypeOf","_setPrototypeOf2","_create2","subClass","superClass","setPrototypeOf","check","buggy","getIterator","b64","crypt","isBuffer","encoding","bytesToWords","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","endian","t","_blocksize","_digestsize","digestbytes","wordsToBytes","asBytes","asString","bytesToHex","base64map","rotl","rotr","randomBytes","words","hex","hexToBytes","bytesToBase64","triplet","base64ToBytes","imod4","isSlowBuffer","readFloatLE","_isBuffer","dataURItoBlob","dataURI","byteString","atob","ia","getValue","_getOwnPropertyDescriptor","_getOwnPropertyDescriptor2","_slicedToArray2","_slicedToArray3","recursiveToPointer","RESERVED_KEYS","checkReservedKey","handleBatchResults","firstError","_mergeMagicFields","_serverData","_opSetQueue","_flags","_hashedJSON","_escapedAttributes","cid","changed","_silent","_pending","silent","_previousAttributes","saveAll","_deepSaveAsync","fetchAll","requests","dirty","fetchedAttrs","_cleanupUnsetKeys","fetchWhenSave","getObjectId","getCreatedAt","createdAt","getUpdatedAt","updatedAt","newSeenObjects","_refreshCache","_refreshingCache","_resetCacheForKey","currentChanges","dirtyKeys","escaped","model","specialFields","_startSave","_cancelSave","failedChanges","nextChanges","op1","op2","_saving","_finishSave","serverData","fetchedObjects","savedChanges","_applyOpSet","fetched","_rebuildAllEstimatedData","opSetQueue","hasData","opSet","actualTarget","actualKey","wasSet","_rebuildEstimatedDataForKey","firstKey","previousAttributes","unset","unused_value","dataToValidate","changes","isRealChange","increment","addUnique","bitAnd","bitOr","bitXor","keysToClear","revert","lastOp","_getSaveJSON","_canBeSerialized","_canBeSerializedAsValue","fetchedKeys","arg3","setOptions","unsavedChildren","unsavedFiles","_findUnsavedChildren","_allPreviousSaves","_failOnNotExist","failOnNotExist","queryParams","_getParams","makeRequest","_makeRequest","requestPromise","resp","serverAttrs","triggerDestroy","isNew","changing","_changing","deleteChanged","isValid","validate","disableBeforeHook","ignoreHook","disableAfterHook","hookName","__ignore_hooks","klass","_klass","destroyAll","objectsByClassNameAndFlags","groupBy","flags","body","ids","ObjectClass","_classMap","NewClassObject","OldClassObject","_className","arg0","newArguments","_LCClassName","register","children","files","canBeSerializedAsValue","batch","newRemaining","readyToStart","bathSavePromise","params","_isIterable2","_isIterable3","sliceIterator","_arr","_e","isIterable","setName","getUsers","getRoles","newName","_defineProperty3","mergeUnionDataIntoAuthData","defaultUnionIdPlatform","authData","unionId","unionIdPlatform","asMainAccount","platform","unionid","main_account","_isCurrentUser","_cleanupAuthData","isCurrent","_synchronizeAllAuthData","_synchronizeAuthData","authType","_authProviders","getAuthType","restoreAuthentication","dissociateAuthData","_handleSaveResult","makeCurrent","password","_saveCurrentUser","_linkWith","authenticate","associateWithAuthData","associateWithAuthDataAndUnionId","unionOptions","associateWithMiniApp","authInfo","option","associateWithQQApp","preferUnionId","associateWithWeapp","linkWithWeapp","associateWithQQAppWithUnionId","mergeUnionId","associateWithWeappWithUnionId","_unlinkFrom","_isLinked","isAnonymous","logOut","_logOutWithAll","_logOutWith","deauthenticate","signUp","username","signUpOrlogInWithMobilePhone","mobilePhoneNumber","smsCode","loginWithAuthData","loginWithAuthDataAndUnionId","unionLoginOptions","loginWithWeapp","loginWithMiniApp","loginWithWeappWithUnionId","loginWithQQApp","loginWithQQAppWithUnionId","logIn","follow","userObjectId","unfollow","getFollowersAndFollowees","skip","limit","followers","followees","follower","followee","followerQuery","followeeQuery","updatePassword","oldPassword","newPassword","old_password","new_password","getUsername","getMobilePhoneNumber","setMobilePhoneNumber","phone","setUsername","setPassword","getEmail","setEmail","email","authenticated","isAuthenticated","_fetchUserBySessionToken","refreshSessionToken","_currentUser","_currentUserMatchesDisk","_CURRENT_USER_KEY","become","logInWithMobilePhoneSmsCode","mobilePhone","logInWithMobilePhone","loginWithEmail","_logInWith","signUpOrlogInWithAuthData","signUpOrlogInWithAuthDataAndUnionId","_genId","loginAnonymously","userObj","FriendShipQuery","_friendshipTag","requestPasswordReset","requestEmailVerify","requestMobilePhoneVerify","validateToken","validate_token","requestPasswordResetBySmsCode","requestChangePhoneNumber","changePhoneNumber","resetPasswordBySmsCode","verifyMobilePhone","requestLoginSmsCode","userData","_id","_registerAuthenticationProvider","requires","objectClass","_include","_select","_limit","_skip","or","queries","q","_orQuery","and","_andQuery","doCloudQuery","cql","pvalues","_newObject","_processResult","fromJSON","select","order","_includeACL","_order","queryJSON","_createRequest","_parseResponse","findAndCount","scan","orderedBy","batchSize","condition","scan_key","cursor","endReached","remainResults","sizeEqualTo","notEqualTo","lessThan","greaterThan","lessThanOrEqualTo","greaterThanOrEqualTo","containedIn","notContainedIn","containsAll","doesNotExist","matches","regex","modifiers","ignoreCase","multiline","matchesQuery","doesNotMatchQuery","matchesKeyInQuery","queryKey","doesNotMatchKeyInQuery","$or","$and","_quote","startsWith","endsWith","ascending","addAscending","descending","addDescending","near","withinRadians","distance","withinMiles","withinKilometers","withinGeoBox","southwest","northeast","$box","finished","callbacksDone","subscribe","LiveQuery","requireRealtime","client","_client","_queryJSON","_onMessage","_dispatch","_onReconnect","queryId","query_id","updatedKeys","unsubscribe","deregister","userDefinedSubscriptionId","createLiveQueryClient","liveQueryClient","finally","pause","resume","Captcha","_authOptions","captchaToken","Cloud","_requestCaptcha","verify","verifyCaptcha","captcha","rpc","getServerDate","requestSmsCode","verifySmsCode","captcha_url","captcha_token","requestCaptcha","captcha_code","Installation","Push","send","push_time","expiration_time","expiration_interval","getUser","getUserPointer","currUser","Status","imageUrl","inboxType","image","_getDataJSON","sendStatusToFollowers","messageId","sendPrivateStatus","countUnreadStatuses","resetUnreadCount","statusQuery","InboxQuery","_objectClass","_sinceId","_maxId","_inboxType","_owner","sinceId","maxId","inboxQuery","SearchSortBuilder","_sortFields","_addField","missing","whereNear","geo","lat","lon","unit","build","SearchQuery","_sid","_hits","_queryString","_highlights","_sortBuilder","_clazz","sid","highlights","builder","hits","hasMore","_hitEnd","reset","_oldSid","appURL","clazz","Insight","startJob","jobConfig","sql","JobQuery","LCRequest","Friendship","friend","friendObject","friendship","acceptRequest","requestId","declineRequest","serializeMessage","getPayload","isSystem","isTransient","getCreator","getLastMessageAt","getMembers","addMember","member","getMutedMembers","fromClient","from_peer","conv_id","transient","toClients","to_peers","pushData","push_data","broadcast","validTill","ts","valid_till","Statistic","LeaderboardVersionChangeInterval","NEVER","DAY","WEEK","MONTH","LeaderboardOrder","ASCENDING","DESCENDING","LeaderboardUpdateStrategy","BETTER","LAST","SUM","parseStatisticData","statisticData","statisticName","statisticValue","Leaderboard","updateStrategy","versionChangeInterval","nextResetAt","createLeaderboard","getLeaderboard","getStatistics","statisticNames","statistics","updateStatistics","overwrite","deleteStatistics","_getResults","selectUserKeys","includeUserKeys","includeStatistics","includeUser","rankingData","rank","includedStatistics","getResults","getResultsAroundUser","_update","updateVersionChangeInterval","updateUpdateStrategy","getArchives","activatedAt","deactivatedAt"],"mappings":"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","file":"av-core-min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AV\"] = factory();\n\telse\n\t\troot[\"AV\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 164);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 815fd649e296aad33a58","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AV\"] = factory();\n\telse\n\t\troot[\"AV\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 164);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_default_js__ = __webpack_require__(189);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return __WEBPACK_IMPORTED_MODULE_0__index_default_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index_js__ = __webpack_require__(70);\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"VERSION\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"restArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"restArguments\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isObject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNull\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isUndefined\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isBoolean\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isElement\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isString\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNumber\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isDate\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isRegExp\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isError\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isSymbol\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArrayBuffer\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArrayBuffer\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isDataView\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isDataView\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isFunction\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArguments\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isFinite\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNaN\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isTypedArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isEmpty\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isMatch\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isEqual\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isMap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isMap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isWeakMap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isWeakMap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isSet\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isSet\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isWeakSet\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isWeakSet\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"keys\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"allKeys\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"allKeys\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"values\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pairs\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"invert\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"functions\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"methods\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"methods\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"extend\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"extendOwn\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"extendOwn\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"assign\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"defaults\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"defaults\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"create\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"clone\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"tap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"tap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"get\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"has\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"mapObject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"mapObject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"identity\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"constant\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"noop\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"toPath\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"toPath\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"property\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"propertyOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"propertyOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"matcher\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"matches\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"matches\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"times\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"times\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"random\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"now\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"escape\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"escape\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unescape\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unescape\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"templateSettings\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"templateSettings\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"template\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"template\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"result\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"result\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"uniqueId\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"chain\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"chain\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"iteratee\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"iteratee\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"partial\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"partial\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"bind\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"bind\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"bindAll\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"bindAll\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"memoize\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"delay\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"delay\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"defer\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"throttle\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"debounce\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"wrap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"negate\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"compose\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"compose\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"after\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"after\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"before\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"before\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"once\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findKey\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findKey\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findLastIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findLastIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sortedIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sortedIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"indexOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"lastIndexOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"lastIndexOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"find\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"detect\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findWhere\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findWhere\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"each\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"forEach\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"map\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"collect\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"collect\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reduce\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"foldl\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"foldl\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"inject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reduceRight\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reduceRight\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"foldr\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"foldr\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"filter\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"select\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"every\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"all\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"all\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"some\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"any\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"any\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"contains\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"includes\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"include\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"include\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"invoke\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"invoke\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pluck\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pluck\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"where\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"where\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"max\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"min\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"shuffle\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sample\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sample\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sortBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"groupBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"indexBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"indexBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"countBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"countBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"partition\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"toArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"size\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pick\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"omit\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"first\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"first\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"head\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"take\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"take\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"initial\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"initial\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"last\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"rest\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"rest\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"tail\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"tail\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"drop\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"drop\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"compact\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"compact\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"flatten\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"without\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"without\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"uniq\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unique\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"union\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"intersection\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"difference\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unzip\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unzip\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"transpose\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"zip\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"object\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"object\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"range\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"chunk\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"chunk\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"mixin\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"mixin\"]; });\n// ESM Exports\n// ===========\n// This module is the package entry point for ES module users. In other words,\n// it is the module they are interfacing with when they import from the whole\n// package instead of from a submodule, like this:\n//\n// ```js\n// import { map } from 'underscore';\n// ```\n//\n// The difference with `./index-default`, which is the package entry point for\n// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and\n// default exports are considered to be siblings, so when you have a default\n// export, its properties are not automatically available as named exports. For\n// this reason, we re-export the named exports in addition to providing the same\n// default export as in `./index-default`.\n\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return root; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ArrayProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return ObjProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return SymbolProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return push; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return slice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return hasOwnProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return supportsArrayBuffer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return supportsDataView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return nativeIsArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return nativeKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return nativeCreate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return nativeIsView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return _isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return _isFinite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return hasEnumBug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return nonEnumerableProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return MAX_ARRAY_INDEX; });\n// Current version.\nvar VERSION = '1.12.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(104)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = keys;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__ = __webpack_require__(115);\n\n\n\n\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return [];\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"m\" /* nativeKeys */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"m\" /* nativeKeys */])(obj);\n var keys = [];\n for (var key in obj) if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__[\"a\" /* default */])(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"h\" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__[\"a\" /* default */])(obj, keys);\n return keys;\n}\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(166), __esModule: true };\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = tagTester;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj) === tag;\n };\n}\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(66)('wks');\nvar uid = __webpack_require__(51);\nvar Symbol = __webpack_require__(6).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = cb;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(125);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__iteratee_js__ = __webpack_require__(126);\n\n\n\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee !== __WEBPACK_IMPORTED_MODULE_2__iteratee_js__[\"a\" /* default */]) return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee(value, context);\n return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__[\"a\" /* default */])(value, context, argCount);\n}\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = restArguments;\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = _;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"e\" /* VERSION */];\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(14);\n\n\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar md5 = __webpack_require__(309);\n\nvar _require = __webpack_require__(0),\n extend = _require.extend;\n\nvar AV = __webpack_require__(34);\n\nvar _require2 = __webpack_require__(15),\n getSessionToken = _require2.getSessionToken;\n\nvar ajax = __webpack_require__(58);\n\n// 计算 X-LC-Sign 的签名方法\nvar sign = function sign(key, isMasterKey) {\n var now = new Date().getTime();\n var signature = md5(now + key);\n if (isMasterKey) {\n return signature + ',' + now + ',master';\n }\n return signature + ',' + now;\n};\n\nvar setAppKey = function setAppKey(headers, signKey) {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.applicationKey);\n } else {\n headers['X-LC-Key'] = AV.applicationKey;\n }\n};\n\nvar setHeaders = function setHeaders() {\n var authOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var signKey = arguments[1];\n\n var headers = {\n 'X-LC-Id': AV.applicationId,\n 'Content-Type': 'application/json;charset=UTF-8'\n };\n var useMasterKey = false;\n if (typeof authOptions.useMasterKey === 'boolean') {\n useMasterKey = authOptions.useMasterKey;\n } else if (typeof AV._config.useMasterKey === 'boolean') {\n useMasterKey = AV._config.useMasterKey;\n }\n if (useMasterKey) {\n if (AV.masterKey) {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.masterKey, true);\n } else {\n headers['X-LC-Key'] = AV.masterKey + ',master';\n }\n } else {\n console.warn('masterKey is not set, fall back to use appKey');\n setAppKey(headers, signKey);\n }\n } else {\n setAppKey(headers, signKey);\n }\n if (AV.hookKey) {\n headers['X-LC-Hook-Key'] = AV.hookKey;\n }\n if (AV._config.production !== null) {\n headers['X-LC-Prod'] = String(AV._config.production);\n }\n headers[undefined === 'NODE_JS' ? 'User-Agent' : 'X-LC-UA'] = AV._sharedConfig.userAgent;\n\n return _promise2.default.resolve().then(function () {\n // Pass the session token\n var sessionToken = getSessionToken(authOptions);\n if (sessionToken) {\n headers['X-LC-Session'] = sessionToken;\n } else if (!AV._config.disableCurrentUser) {\n return AV.User.currentAsync().then(function (currentUser) {\n if (currentUser && currentUser._sessionToken) {\n headers['X-LC-Session'] = currentUser._sessionToken;\n }\n return headers;\n });\n }\n return headers;\n });\n};\n\nvar createApiUrl = function createApiUrl(_ref) {\n var _ref$service = _ref.service,\n service = _ref$service === undefined ? 'api' : _ref$service,\n _ref$version = _ref.version,\n version = _ref$version === undefined ? '1.1' : _ref$version,\n path = _ref.path;\n\n var apiURL = AV._config.serverURLs[service];\n\n if (!apiURL) throw new Error('undefined server URL for ' + service);\n\n if (apiURL.charAt(apiURL.length - 1) !== '/') {\n apiURL += '/';\n }\n apiURL += version;\n if (path) {\n apiURL += path;\n }\n\n return apiURL;\n};\n\n/**\n * Low level REST API client. Call REST endpoints with authorization headers.\n * @function AV.request\n * @since 3.0.0\n * @param {Object} options\n * @param {String} options.method HTTP method\n * @param {String} options.path endpoint path, e.g. `/classes/Test/55759577e4b029ae6015ac20`\n * @param {Object} [options.query] query string dict\n * @param {Object} [options.data] HTTP body\n * @param {AuthOptions} [options.authOptions]\n * @param {String} [options.service = 'api']\n * @param {String} [options.version = '1.1']\n */\nvar request = function request(_ref2) {\n var service = _ref2.service,\n version = _ref2.version,\n method = _ref2.method,\n path = _ref2.path,\n query = _ref2.query,\n data = _ref2.data,\n authOptions = _ref2.authOptions,\n _ref2$signKey = _ref2.signKey,\n signKey = _ref2$signKey === undefined ? true : _ref2$signKey;\n\n if (!(AV.applicationId && (AV.applicationKey || AV.masterKey))) {\n throw new Error('Not initialized');\n }\n if (AV._appRouter) {\n AV._appRouter.refresh();\n }\n var timeout = AV._config.requestTimeout;\n\n var url = createApiUrl({ service: service, path: path, version: version });\n return setHeaders(authOptions, signKey).then(function (headers) {\n return ajax({ method: method, url: url, query: query, data: data, headers: headers, timeout: timeout }).catch(function (error) {\n var errorJSON = {\n code: error.code || -1,\n error: error.message || error.responseText\n };\n if (error.response && error.response.code) {\n errorJSON = error.response;\n } else if (error.responseText) {\n try {\n errorJSON = JSON.parse(error.responseText);\n } catch (e) {\n // If we fail to parse the error text, that's okay.\n }\n }\n errorJSON.rawMessage = errorJSON.rawMessage || errorJSON.error;\n if (!AV._sharedConfig.keepErrorRawMessage) {\n errorJSON.error += ' [' + (error.statusCode || 'N/A') + ' ' + method + ' ' + url + ']';\n }\n // Transform the error into an instance of AVError by trying to parse\n // the error string as JSON.\n var err = new Error(errorJSON.error);\n delete errorJSON.error;\n throw _.extend(err, errorJSON);\n });\n });\n};\n\n// lagecy request\nvar _request = function _request(route, className, objectId, method, data, authOptions, query) {\n var path = '';\n if (route) path += '/' + route;\n if (className) path += '/' + className;\n if (objectId) path += '/' + objectId;\n // for migeration\n if (data && data._fetchWhenSave) throw new Error('_fetchWhenSave should be in the query');\n if (data && data._where) throw new Error('_where should be in the query');\n if (method && method.toLowerCase() === 'get') {\n query = extend({}, query, data);\n data = null;\n }\n return request({\n method: method,\n path: path,\n query: query,\n data: data,\n authOptions: authOptions\n });\n};\n\nAV.request = request;\n\nmodule.exports = {\n _request: _request,\n request: request\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(1);\n\n\n\nvar isFunction = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"p\" /* root */].document && __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"p\" /* root */].document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isFunction);\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(114);\n\n\n// Internal helper to obtain the `length` property of an object.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__[\"a\" /* default */])('length'));\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = __webpack_require__(155);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\n\n// Helper function to check null or undefined.\nvar isNullOrUndefined = function isNullOrUndefined(x) {\n return _.isNull(x) || _.isUndefined(x);\n};\n\nvar ensureArray = function ensureArray(target) {\n if (_.isArray(target)) {\n return target;\n }\n if (target === undefined || target === null) {\n return [];\n }\n return [target];\n};\n\nvar transformFetchOptions = function transformFetchOptions() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n keys = _ref.keys,\n include = _ref.include,\n includeACL = _ref.includeACL;\n\n var fetchOptions = {};\n if (keys) {\n fetchOptions.keys = ensureArray(keys).join(',');\n }\n if (include) {\n fetchOptions.include = ensureArray(include).join(',');\n }\n if (includeACL) {\n fetchOptions.returnACL = includeACL;\n }\n return fetchOptions;\n};\n\nvar getSessionToken = function getSessionToken(authOptions) {\n if (authOptions.sessionToken) {\n return authOptions.sessionToken;\n }\n if (authOptions.user && typeof authOptions.user.getSessionToken === 'function') {\n return authOptions.user.getSessionToken();\n }\n};\n\nvar tap = function tap(interceptor) {\n return function (value) {\n return interceptor(value), value;\n };\n};\n\n// Shared empty constructor function to aid in prototype-chain creation.\nvar EmptyConstructor = function EmptyConstructor() {};\n\n// Helper function to correctly set up the prototype chain, for subclasses.\n// Similar to `goog.inherits`, but uses a hash of prototype properties and\n// class properties to be extended.\nvar inherits = function inherits(parent, protoProps, staticProps) {\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent's constructor.\n if (protoProps && protoProps.hasOwnProperty('constructor')) {\n child = protoProps.constructor;\n } else {\n /** @ignore */\n child = function child() {\n parent.apply(this, arguments);\n };\n }\n\n // Inherit class (static) properties from parent.\n _.extend(child, parent);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n EmptyConstructor.prototype = parent.prototype;\n child.prototype = new EmptyConstructor();\n\n // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n if (protoProps) {\n _.extend(child.prototype, protoProps);\n }\n\n // Add static properties to the constructor function, if supplied.\n if (staticProps) {\n _.extend(child, staticProps);\n }\n\n // Correctly set child's `prototype.constructor`.\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is\n // needed later.\n child.__super__ = parent.prototype;\n\n return child;\n};\n\nvar parseDate = function parseDate(iso8601) {\n return new Date(iso8601);\n};\n\nvar setValue = function setValue(target, key, value) {\n // '.' is not allowed in Class keys, escaping is not in concern now.\n var segs = key.split('.');\n var lastSeg = segs.pop();\n var currentTarget = target;\n segs.forEach(function (seg) {\n if (currentTarget[seg] === undefined) currentTarget[seg] = {};\n currentTarget = currentTarget[seg];\n });\n currentTarget[lastSeg] = value;\n return target;\n};\n\nvar findValue = function findValue(target, key) {\n var segs = key.split('.');\n var firstSeg = segs[0];\n var lastSeg = segs.pop();\n var currentTarget = target;\n for (var i = 0; i < segs.length; i++) {\n currentTarget = currentTarget[segs[i]];\n if (currentTarget === undefined) {\n return [undefined, undefined, lastSeg];\n }\n }\n var value = currentTarget[lastSeg];\n return [value, currentTarget, lastSeg, firstSeg];\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n return _.isObject(obj) && (0, _getPrototypeOf2.default)(obj) === Object.prototype;\n};\n\nvar continueWhile = function continueWhile(predicate, asyncFunction) {\n if (predicate()) {\n return asyncFunction().then(function () {\n return continueWhile(predicate, asyncFunction);\n });\n }\n return _promise2.default.resolve();\n};\n\nmodule.exports = {\n isNullOrUndefined: isNullOrUndefined,\n ensureArray: ensureArray,\n transformFetchOptions: transformFetchOptions,\n getSessionToken: getSessionToken,\n tap: tap,\n inherits: inherits,\n parseDate: parseDate,\n setValue: setValue,\n findValue: findValue,\n isPlainObject: isPlainObject,\n continueWhile: continueWhile\n};\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(20);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(6);\nvar core = __webpack_require__(2);\nvar ctx = __webpack_require__(38);\nvar hide = __webpack_require__(23);\nvar has = __webpack_require__(24);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(261), __esModule: true };\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(16);\nvar IE8_DOM_DEFINE = __webpack_require__(93);\nvar toPrimitive = __webpack_require__(63);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(21) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(39)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = has;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has(obj, key) {\n return obj != null && __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"i\" /* hasOwnProperty */].call(obj, key);\n}\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(19);\nvar createDesc = __webpack_require__(49);\nmodule.exports = __webpack_require__(21) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(170);\nvar defined = __webpack_require__(61);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isObject;\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tagTester_js__ = __webpack_require__(5);\n\n\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"k\" /* nativeIsArray */] || Object(__WEBPACK_IMPORTED_MODULE_1__tagTester_js__[\"a\" /* default */])('Array'));\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = each;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(3);\n\n\n\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__[\"a\" /* default */])(iteratee, context);\n var i, length;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\n\n/**\n * @class AV.Error\n */\n\nfunction AVError(code, message) {\n var error = new Error(message);\n error.code = code;\n return error;\n}\n\n_.extend(AVError,\n/** @lends AV.Error */{\n /**\n * Error code indicating some error other than those enumerated here.\n * @constant\n */\n OTHER_CAUSE: -1,\n\n /**\n * Error code indicating that something has gone wrong with the server.\n * If you get this error code, it is AV's fault. Contact us at\n * https://avoscloud.com/help\n * @constant\n */\n INTERNAL_SERVER_ERROR: 1,\n\n /**\n * Error code indicating the connection to the AV servers failed.\n * @constant\n */\n CONNECTION_FAILED: 100,\n\n /**\n * Error code indicating the specified object doesn't exist.\n * @constant\n */\n OBJECT_NOT_FOUND: 101,\n\n /**\n * Error code indicating you tried to query with a datatype that doesn't\n * support it, like exact matching an array or object.\n * @constant\n */\n INVALID_QUERY: 102,\n\n /**\n * Error code indicating a missing or invalid classname. Classnames are\n * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\n * only valid characters.\n * @constant\n */\n INVALID_CLASS_NAME: 103,\n\n /**\n * Error code indicating an unspecified object id.\n * @constant\n */\n MISSING_OBJECT_ID: 104,\n\n /**\n * Error code indicating an invalid key name. Keys are case-sensitive. They\n * must start with a letter, and a-zA-Z0-9_ are the only valid characters.\n * @constant\n */\n INVALID_KEY_NAME: 105,\n\n /**\n * Error code indicating a malformed pointer. You should not see this unless\n * you have been mucking about changing internal AV code.\n * @constant\n */\n INVALID_POINTER: 106,\n\n /**\n * Error code indicating that badly formed JSON was received upstream. This\n * either indicates you have done something unusual with modifying how\n * things encode to JSON, or the network is failing badly.\n * @constant\n */\n INVALID_JSON: 107,\n\n /**\n * Error code indicating that the feature you tried to access is only\n * available internally for testing purposes.\n * @constant\n */\n COMMAND_UNAVAILABLE: 108,\n\n /**\n * You must call AV.initialize before using the AV library.\n * @constant\n */\n NOT_INITIALIZED: 109,\n\n /**\n * Error code indicating that a field was set to an inconsistent type.\n * @constant\n */\n INCORRECT_TYPE: 111,\n\n /**\n * Error code indicating an invalid channel name. A channel name is either\n * an empty string (the broadcast channel) or contains only a-zA-Z0-9_\n * characters.\n * @constant\n */\n INVALID_CHANNEL_NAME: 112,\n\n /**\n * Error code indicating that push is misconfigured.\n * @constant\n */\n PUSH_MISCONFIGURED: 115,\n\n /**\n * Error code indicating that the object is too large.\n * @constant\n */\n OBJECT_TOO_LARGE: 116,\n\n /**\n * Error code indicating that the operation isn't allowed for clients.\n * @constant\n */\n OPERATION_FORBIDDEN: 119,\n\n /**\n * Error code indicating the result was not found in the cache.\n * @constant\n */\n CACHE_MISS: 120,\n\n /**\n * Error code indicating that an invalid key was used in a nested\n * JSONObject.\n * @constant\n */\n INVALID_NESTED_KEY: 121,\n\n /**\n * Error code indicating that an invalid filename was used for AVFile.\n * A valid file name contains only a-zA-Z0-9_. characters and is between 1\n * and 128 characters.\n * @constant\n */\n INVALID_FILE_NAME: 122,\n\n /**\n * Error code indicating an invalid ACL was provided.\n * @constant\n */\n INVALID_ACL: 123,\n\n /**\n * Error code indicating that the request timed out on the server. Typically\n * this indicates that the request is too expensive to run.\n * @constant\n */\n TIMEOUT: 124,\n\n /**\n * Error code indicating that the email address was invalid.\n * @constant\n */\n INVALID_EMAIL_ADDRESS: 125,\n\n /**\n * Error code indicating a missing content type.\n * @constant\n */\n MISSING_CONTENT_TYPE: 126,\n\n /**\n * Error code indicating a missing content length.\n * @constant\n */\n MISSING_CONTENT_LENGTH: 127,\n\n /**\n * Error code indicating an invalid content length.\n * @constant\n */\n INVALID_CONTENT_LENGTH: 128,\n\n /**\n * Error code indicating a file that was too large.\n * @constant\n */\n FILE_TOO_LARGE: 129,\n\n /**\n * Error code indicating an error saving a file.\n * @constant\n */\n FILE_SAVE_ERROR: 130,\n\n /**\n * Error code indicating an error deleting a file.\n * @constant\n */\n FILE_DELETE_ERROR: 153,\n\n /**\n * Error code indicating that a unique field was given a value that is\n * already taken.\n * @constant\n */\n DUPLICATE_VALUE: 137,\n\n /**\n * Error code indicating that a role's name is invalid.\n * @constant\n */\n INVALID_ROLE_NAME: 139,\n\n /**\n * Error code indicating that an application quota was exceeded. Upgrade to\n * resolve.\n * @constant\n */\n EXCEEDED_QUOTA: 140,\n\n /**\n * Error code indicating that a Cloud Code script failed.\n * @constant\n */\n SCRIPT_FAILED: 141,\n\n /**\n * Error code indicating that a Cloud Code validation failed.\n * @constant\n */\n VALIDATION_ERROR: 142,\n\n /**\n * Error code indicating that invalid image data was provided.\n * @constant\n */\n INVALID_IMAGE_DATA: 150,\n\n /**\n * Error code indicating an unsaved file.\n * @constant\n */\n UNSAVED_FILE_ERROR: 151,\n\n /**\n * Error code indicating an invalid push time.\n */\n INVALID_PUSH_TIME_ERROR: 152,\n\n /**\n * Error code indicating that the username is missing or empty.\n * @constant\n */\n USERNAME_MISSING: 200,\n\n /**\n * Error code indicating that the password is missing or empty.\n * @constant\n */\n PASSWORD_MISSING: 201,\n\n /**\n * Error code indicating that the username has already been taken.\n * @constant\n */\n USERNAME_TAKEN: 202,\n\n /**\n * Error code indicating that the email has already been taken.\n * @constant\n */\n EMAIL_TAKEN: 203,\n\n /**\n * Error code indicating that the email is missing, but must be specified.\n * @constant\n */\n EMAIL_MISSING: 204,\n\n /**\n * Error code indicating that a user with the specified email was not found.\n * @constant\n */\n EMAIL_NOT_FOUND: 205,\n\n /**\n * Error code indicating that a user object without a valid session could\n * not be altered.\n * @constant\n */\n SESSION_MISSING: 206,\n\n /**\n * Error code indicating that a user can only be created through signup.\n * @constant\n */\n MUST_CREATE_USER_THROUGH_SIGNUP: 207,\n\n /**\n * Error code indicating that an an account being linked is already linked\n * to another user.\n * @constant\n */\n ACCOUNT_ALREADY_LINKED: 208,\n\n /**\n * Error code indicating that a user cannot be linked to an account because\n * that account's id could not be found.\n * @constant\n */\n LINKED_ID_MISSING: 250,\n\n /**\n * Error code indicating that a user with a linked (e.g. Facebook) account\n * has an invalid session.\n * @constant\n */\n INVALID_LINKED_SESSION: 251,\n\n /**\n * Error code indicating that a service being linked (e.g. Facebook or\n * Twitter) is unsupported.\n * @constant\n */\n UNSUPPORTED_SERVICE: 252,\n /**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n * @constant\n */\n X_DOMAIN_REQUEST: 602\n});\n\nmodule.exports = AVError;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = values;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(3);\n\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = flatten;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArray_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(73);\n\n\n\n\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(input); i < length; i++) {\n var value = input[i];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(value) && (Object(__WEBPACK_IMPORTED_MODULE_2__isArray_js__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__[\"a\" /* default */])(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = map;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(3);\n\n\n\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(153);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar uuid = __webpack_require__(154);\nvar debug = __webpack_require__(35);\n\nvar _require = __webpack_require__(15),\n inherits = _require.inherits,\n parseDate = _require.parseDate;\n\nvar version = __webpack_require__(156);\n\nvar _require2 = __webpack_require__(36),\n setAdapters = _require2.setAdapters,\n adapterManager = _require2.adapterManager;\n\nvar AV = global.AV || {};\n\n// All internal configuration items\nAV._config = {\n serverURLs: {},\n useMasterKey: false,\n production: null,\n realtime: null,\n requestTimeout: null\n};\n\nvar initialUserAgent = 'LeanCloud-JS-SDK/' + version;\n\n// configs shared by all AV instances\nAV._sharedConfig = {\n userAgent: initialUserAgent,\n liveQueryRealtime: null\n};\n\nadapterManager.on('platformInfo', function (platformInfo) {\n var ua = initialUserAgent;\n if (platformInfo) {\n if (platformInfo.userAgent) {\n ua = platformInfo.userAgent;\n } else {\n var comments = platformInfo.name;\n if (platformInfo.version) {\n comments += '/' + platformInfo.version;\n }\n if (platformInfo.extra) {\n comments += '; ' + platformInfo.extra;\n }\n ua += ' (' + comments + ')';\n }\n }\n AV._sharedConfig.userAgent = ua;\n});\n\n/**\n * Contains all AV API classes and functions.\n * @namespace AV\n */\n\n/**\n * Returns prefix for localStorage keys used by this instance of AV.\n * @param {String} path The relative suffix to append to it.\n * null or undefined is treated as the empty string.\n * @return {String} The full key name.\n * @private\n */\nAV._getAVPath = function (path) {\n if (!AV.applicationId) {\n throw new Error('You need to call AV.initialize before using AV.');\n }\n if (!path) {\n path = '';\n }\n if (!_.isString(path)) {\n throw new Error(\"Tried to get a localStorage path that wasn't a String.\");\n }\n if (path[0] === '/') {\n path = path.substring(1);\n }\n return 'AV/' + AV.applicationId + '/' + path;\n};\n\n/**\n * Returns the unique string for this app on this machine.\n * Gets reset when localStorage is cleared.\n * @private\n */\nAV._installationId = null;\nAV._getInstallationId = function () {\n // See if it's cached in RAM.\n if (AV._installationId) {\n return _promise2.default.resolve(AV._installationId);\n }\n\n // Try to get it from localStorage.\n var path = AV._getAVPath('installationId');\n return AV.localStorage.getItemAsync(path).then(function (_installationId) {\n AV._installationId = _installationId;\n if (!AV._installationId) {\n // It wasn't in localStorage, so create a new one.\n AV._installationId = _installationId = uuid();\n return AV.localStorage.setItemAsync(path, _installationId).then(function () {\n return _installationId;\n });\n }\n return _installationId;\n });\n};\n\nAV._subscriptionId = null;\nAV._refreshSubscriptionId = function () {\n var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : AV._getAVPath('subscriptionId');\n\n var subscriptionId = AV._subscriptionId = uuid();\n return AV.localStorage.setItemAsync(path, subscriptionId).then(function () {\n return subscriptionId;\n });\n};\nAV._getSubscriptionId = function () {\n // See if it's cached in RAM.\n if (AV._subscriptionId) {\n return _promise2.default.resolve(AV._subscriptionId);\n }\n\n // Try to get it from localStorage.\n var path = AV._getAVPath('subscriptionId');\n return AV.localStorage.getItemAsync(path).then(function (_subscriptionId) {\n AV._subscriptionId = _subscriptionId;\n if (!AV._subscriptionId) {\n // It wasn't in localStorage, so create a new one.\n _subscriptionId = AV._refreshSubscriptionId(path);\n }\n return _subscriptionId;\n });\n};\n\nAV._parseDate = parseDate;\n\n// A self-propagating extend function.\nAV._extend = function (protoProps, classProps) {\n var child = inherits(this, protoProps, classProps);\n child.extend = this.extend;\n return child;\n};\n\n/**\n * Converts a value in a AV Object into the appropriate representation.\n * This is the JS equivalent of Java's AV.maybeReferenceAndEncode(Object)\n * if seenObjects is falsey. Otherwise any AV.Objects not in\n * seenObjects will be fully embedded rather than encoded\n * as a pointer. This array will be used to prevent going into an infinite\n * loop because we have circular references. If <seenObjects>\n * is set, then none of the AV Objects that are serialized can be dirty.\n * @private\n */\nAV._encode = function (value, seenObjects, disallowObjects) {\n var full = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (value instanceof AV.Object) {\n if (disallowObjects) {\n throw new Error('AV.Objects not allowed here');\n }\n if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {\n return value._toPointer();\n }\n return value._toFullJSON(seenObjects.concat(value), full);\n }\n if (value instanceof AV.ACL) {\n return value.toJSON();\n }\n if (_.isDate(value)) {\n return full ? { __type: 'Date', iso: value.toJSON() } : value.toJSON();\n }\n if (value instanceof AV.GeoPoint) {\n return value.toJSON();\n }\n if (_.isArray(value)) {\n return _.map(value, function (x) {\n return AV._encode(x, seenObjects, disallowObjects, full);\n });\n }\n if (_.isRegExp(value)) {\n return value.source;\n }\n if (value instanceof AV.Relation) {\n return value.toJSON();\n }\n if (value instanceof AV.Op) {\n return value.toJSON();\n }\n if (value instanceof AV.File) {\n if (!value.url() && !value.id) {\n throw new Error('Tried to save an object containing an unsaved file.');\n }\n return value._toFullJSON(seenObjects, full);\n }\n if (_.isObject(value)) {\n return _.mapObject(value, function (v, k) {\n return AV._encode(v, seenObjects, disallowObjects, full);\n });\n }\n return value;\n};\n\n/**\n * The inverse function of AV._encode.\n * @private\n */\nAV._decode = function (value, key) {\n if (!_.isObject(value) || _.isDate(value)) {\n return value;\n }\n if (_.isArray(value)) {\n return _.map(value, function (v) {\n return AV._decode(v);\n });\n }\n if (value instanceof AV.Object) {\n return value;\n }\n if (value instanceof AV.File) {\n return value;\n }\n if (value instanceof AV.Op) {\n return value;\n }\n if (value instanceof AV.GeoPoint) {\n return value;\n }\n if (value instanceof AV.ACL) {\n return value;\n }\n if (key === 'ACL') {\n return new AV.ACL(value);\n }\n if (value.__op) {\n return AV.Op._decode(value);\n }\n var className;\n if (value.__type === 'Pointer') {\n className = value.className;\n var pointer = AV.Object._create(className);\n if ((0, _keys2.default)(value).length > 3) {\n var v = _.clone(value);\n delete v.__type;\n delete v.className;\n pointer._finishFetch(v, true);\n } else {\n pointer._finishFetch({ objectId: value.objectId }, false);\n }\n return pointer;\n }\n if (value.__type === 'Object') {\n // It's an Object included in a query result.\n className = value.className;\n var _v = _.clone(value);\n delete _v.__type;\n delete _v.className;\n var object = AV.Object._create(className);\n object._finishFetch(_v, true);\n return object;\n }\n if (value.__type === 'Date') {\n return AV._parseDate(value.iso);\n }\n if (value.__type === 'GeoPoint') {\n return new AV.GeoPoint({\n latitude: value.latitude,\n longitude: value.longitude\n });\n }\n if (value.__type === 'Relation') {\n if (!key) throw new Error('key missing decoding a Relation');\n var relation = new AV.Relation(null, key);\n relation.targetClassName = value.className;\n return relation;\n }\n if (value.__type === 'File') {\n var file = new AV.File(value.name);\n var _v2 = _.clone(value);\n delete _v2.__type;\n file._finishFetch(_v2);\n return file;\n }\n return _.mapObject(value, AV._decode);\n};\n\n/**\n * The inverse function of {@link AV.Object#toFullJSON}.\n * @since 3.0.0\n * @method\n * @param {Object}\n * return {AV.Object|AV.File|any}\n */\nAV.parseJSON = AV._decode;\n\n/**\n * Similar to JSON.parse, except that AV internal types will be used if possible.\n * Inverse to {@link AV.stringify}\n * @since 3.14.0\n * @param {string} text the string to parse.\n * @return {AV.Object|AV.File|any}\n */\nAV.parse = function (text) {\n return AV.parseJSON(JSON.parse(text));\n};\n/**\n * Serialize a target containing AV.Object, similar to JSON.stringify.\n * Inverse to {@link AV.parse}\n * @since 3.14.0\n * @return {string}\n */\nAV.stringify = function (target) {\n return (0, _stringify2.default)(AV._encode(target, [], false, true));\n};\n\nAV._encodeObjectOrArray = function (value) {\n var encodeAVObject = function encodeAVObject(object) {\n if (object && object._toFullJSON) {\n object = object._toFullJSON([]);\n }\n\n return _.mapObject(object, function (value) {\n return AV._encode(value, []);\n });\n };\n\n if (_.isArray(value)) {\n return value.map(function (object) {\n return encodeAVObject(object);\n });\n } else {\n return encodeAVObject(value);\n }\n};\n\nAV._arrayEach = _.each;\n\n/**\n * Does a deep traversal of every item in object, calling func on every one.\n * @param {Object} object The object or array to traverse deeply.\n * @param {Function} func The function to call for every item. It will\n * be passed the item as an argument. If it returns a truthy value, that\n * value will replace the item in its parent container.\n * @returns {} the result of calling func on the top-level object itself.\n * @private\n */\nAV._traverse = function (object, func, seen) {\n if (object instanceof AV.Object) {\n seen = seen || [];\n if (_.indexOf(seen, object) >= 0) {\n // We've already visited this object in this call.\n return;\n }\n seen.push(object);\n AV._traverse(object.attributes, func, seen);\n return func(object);\n }\n if (object instanceof AV.Relation || object instanceof AV.File) {\n // Nothing needs to be done, but we don't want to recurse into the\n // object's parent infinitely, so we catch this case.\n return func(object);\n }\n if (_.isArray(object)) {\n _.each(object, function (child, index) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[index] = newChild;\n }\n });\n return func(object);\n }\n if (_.isObject(object)) {\n AV._each(object, function (child, key) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[key] = newChild;\n }\n });\n return func(object);\n }\n return func(object);\n};\n\n/**\n * This is like _.each, except:\n * * it doesn't work for so-called array-like objects,\n * * it does work for dictionaries with a \"length\" attribute.\n * @private\n */\nAV._objectEach = AV._each = function (obj, callback) {\n if (_.isObject(obj)) {\n _.each(_.keys(obj), function (key) {\n callback(obj[key], key);\n });\n } else {\n _.each(obj, callback);\n }\n};\n\n/**\n * @namespace\n * @since 3.14.0\n */\nAV.debug = {\n /**\n * Enable debug\n */\n enable: function enable() {\n var namespaces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'leancloud*';\n return debug.enable(namespaces);\n },\n /**\n * Disable debug\n */\n disable: debug.disable\n};\n\n/**\n * Specify Adapters\n * @since 4.4.0\n * @function\n * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions.\n */\nAV.setAdapters = setAdapters;\n\nmodule.exports = AV;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(104)))\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = __webpack_require__(266)(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\nvar EventEmitter = __webpack_require__(157);\n\nvar _require = __webpack_require__(15),\n inherits = _require.inherits;\n\nvar AdapterManager = inherits(EventEmitter, {\n constructor: function constructor() {\n EventEmitter.apply(this);\n this._adapters = {};\n },\n getAdapter: function getAdapter(name) {\n var adapter = this._adapters[name];\n if (adapter === undefined) {\n throw new Error(name + ' adapter is not configured');\n }\n return adapter;\n },\n setAdapters: function setAdapters(newAdapters) {\n var _this = this;\n\n _.extend(this._adapters, newAdapters);\n _.keys(newAdapters).forEach(function (name) {\n return _this.emit(name, newAdapters[name]);\n });\n }\n});\n\nvar adapterManager = new AdapterManager();\n\nmodule.exports = {\n getAdapter: adapterManager.getAdapter.bind(adapterManager),\n setAdapters: adapterManager.setAdapters.bind(adapterManager),\n adapterManager: adapterManager\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(48);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return hasStringTagBug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return isIE11; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__ = __webpack_require__(195);\n\n\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"s\" /* supportsDataView */] && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__[\"a\" /* default */])(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__[\"a\" /* default */])(new Map));\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = allKeys;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__ = __webpack_require__(115);\n\n\n\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"h\" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__[\"a\" /* default */])(obj, keys);\n return keys;\n}\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toPath;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(124);\n\n\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].toPath(path);\n}\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = optimizeCb;\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = filter;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(28);\n\n\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = contains;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__indexOf_js__ = __webpack_require__(140);\n\n\n\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return Object(__WEBPACK_IMPORTED_MODULE_2__indexOf_js__[\"a\" /* default */])(obj, item, fromIndex) >= 0;\n}\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(167)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(92)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(95);\nvar enumBugKeys = __webpack_require__(67);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(19).f;\nvar has = __webpack_require__(24);\nvar TAG = __webpack_require__(7)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(61);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(173);\nvar global = __webpack_require__(6);\nvar hide = __webpack_require__(23);\nvar Iterators = __webpack_require__(30);\nvar TO_STRING_TAG = __webpack_require__(7)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = matcher;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__extendOwn_js__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isMatch_js__ = __webpack_require__(116);\n\n\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = Object(__WEBPACK_IMPORTED_MODULE_0__extendOwn_js__[\"a\" /* default */])({}, attrs);\n return function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isMatch_js__[\"a\" /* default */])(obj, attrs);\n };\n}\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__executeBound_js__ = __webpack_require__(132);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(10);\n\n\n\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return Object(__WEBPACK_IMPORTED_MODULE_1__executeBound_js__[\"a\" /* default */])(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = __WEBPACK_IMPORTED_MODULE_2__underscore_js__[\"a\" /* default */];\n/* harmony default export */ __webpack_exports__[\"a\"] = (partial);\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = group;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(28);\n\n\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _typeof2 = __webpack_require__(59);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = __webpack_require__(153);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\n\nvar _require = __webpack_require__(285),\n timeout = _require.timeout;\n\nvar debug = __webpack_require__(35);\nvar debugRequest = debug('leancloud:request');\nvar debugRequestError = debug('leancloud:request:error');\n\nvar _require2 = __webpack_require__(36),\n getAdapter = _require2.getAdapter;\n\nvar requestsCount = 0;\n\nvar ajax = function ajax(_ref) {\n var method = _ref.method,\n url = _ref.url,\n query = _ref.query,\n data = _ref.data,\n _ref$headers = _ref.headers,\n headers = _ref$headers === undefined ? {} : _ref$headers,\n time = _ref.timeout,\n onprogress = _ref.onprogress;\n\n if (query) {\n var queryString = (0, _keys2.default)(query).map(function (key) {\n var value = query[key];\n if (value === undefined) return undefined;\n var v = (typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) === 'object' ? (0, _stringify2.default)(value) : value;\n return encodeURIComponent(key) + '=' + encodeURIComponent(v);\n }).filter(function (qs) {\n return qs;\n }).join('&');\n url = url + '?' + queryString;\n }\n\n var count = requestsCount++;\n debugRequest('request(%d) %s %s %o %o %o', count, method, url, query, data, headers);\n\n var request = getAdapter('request');\n var promise = request(url, { method: method, headers: headers, data: data, onprogress: onprogress }).then(function (response) {\n debugRequest('response(%d) %d %O %o', count, response.status, response.data || response.text, response.header);\n if (response.ok === false) {\n var error = new Error();\n error.response = response;\n throw error;\n }\n return response.data;\n }).catch(function (error) {\n if (error.response) {\n if (!debug.enabled('leancloud:request')) {\n debugRequestError('request(%d) %s %s %o %o %o', count, method, url, query, data, headers);\n }\n debugRequestError('response(%d) %d %O %o', count, error.response.status, error.response.data || error.response.text, error.response.header);\n error.statusCode = error.response.status;\n error.responseText = error.response.text;\n error.response = error.response.data;\n }\n throw error;\n });\n return time ? timeout(promise, time) : promise;\n};\n\nmodule.exports = ajax;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(274);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(276);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(20);\nvar document = __webpack_require__(6).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(20);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(16);\nvar dPs = __webpack_require__(169);\nvar enumBugKeys = __webpack_require__(67);\nvar IE_PROTO = __webpack_require__(65)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(62)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(97).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(66)('keys');\nvar uid = __webpack_require__(51);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(2);\nvar global = __webpack_require__(6);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(37) ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(40);\nvar TAG = __webpack_require__(7)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(48);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"e\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__restArguments_js__ = __webpack_require__(9);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"restArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__restArguments_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(26);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_2__isObject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isNull_js__ = __webpack_require__(190);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_3__isNull_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__ = __webpack_require__(105);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__ = __webpack_require__(106);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isElement_js__ = __webpack_require__(191);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_6__isElement_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__isString_js__ = __webpack_require__(71);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_7__isString_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__isNumber_js__ = __webpack_require__(107);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_8__isNumber_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__isDate_js__ = __webpack_require__(192);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_9__isDate_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__ = __webpack_require__(193);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__isError_js__ = __webpack_require__(194);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_11__isError_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__ = __webpack_require__(108);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__ = __webpack_require__(109);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArrayBuffer\", function() { return __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__isDataView_js__ = __webpack_require__(72);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDataView\", function() { return __WEBPACK_IMPORTED_MODULE_14__isDataView_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__isArray_js__ = __webpack_require__(27);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_15__isArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__isFunction_js__ = __webpack_require__(13);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_16__isFunction_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__isArguments_js__ = __webpack_require__(73);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_17__isArguments_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__isFinite_js__ = __webpack_require__(196);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_18__isFinite_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__isNaN_js__ = __webpack_require__(110);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return __WEBPACK_IMPORTED_MODULE_19__isNaN_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__ = __webpack_require__(111);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__ = __webpack_require__(198);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__isMatch_js__ = __webpack_require__(116);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_22__isMatch_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__isEqual_js__ = __webpack_require__(199);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_23__isEqual_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__isMap_js__ = __webpack_require__(201);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMap\", function() { return __WEBPACK_IMPORTED_MODULE_24__isMap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__ = __webpack_require__(202);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeakMap\", function() { return __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__isSet_js__ = __webpack_require__(203);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isSet\", function() { return __WEBPACK_IMPORTED_MODULE_26__isSet_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__ = __webpack_require__(204);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeakSet\", function() { return __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__keys_js__ = __webpack_require__(3);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_28__keys_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__allKeys_js__ = __webpack_require__(42);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"allKeys\", function() { return __WEBPACK_IMPORTED_MODULE_29__allKeys_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__values_js__ = __webpack_require__(31);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_30__values_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__pairs_js__ = __webpack_require__(205);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return __WEBPACK_IMPORTED_MODULE_31__pairs_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__invert_js__ = __webpack_require__(117);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return __WEBPACK_IMPORTED_MODULE_32__invert_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__functions_js__ = __webpack_require__(118);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"methods\", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__extend_js__ = __webpack_require__(119);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_34__extend_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__ = __webpack_require__(77);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extendOwn\", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__defaults_js__ = __webpack_require__(120);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"defaults\", function() { return __WEBPACK_IMPORTED_MODULE_36__defaults_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__create_js__ = __webpack_require__(206);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return __WEBPACK_IMPORTED_MODULE_37__create_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__clone_js__ = __webpack_require__(122);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_38__clone_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__tap_js__ = __webpack_require__(207);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tap\", function() { return __WEBPACK_IMPORTED_MODULE_39__tap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__get_js__ = __webpack_require__(123);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_40__get_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__has_js__ = __webpack_require__(208);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_41__has_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__mapObject_js__ = __webpack_require__(209);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mapObject\", function() { return __WEBPACK_IMPORTED_MODULE_42__mapObject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__identity_js__ = __webpack_require__(79);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_43__identity_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__constant_js__ = __webpack_require__(112);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return __WEBPACK_IMPORTED_MODULE_44__constant_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__noop_js__ = __webpack_require__(127);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_45__noop_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__toPath_js__ = __webpack_require__(124);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toPath\", function() { return __WEBPACK_IMPORTED_MODULE_46__toPath_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__property_js__ = __webpack_require__(80);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return __WEBPACK_IMPORTED_MODULE_47__property_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__ = __webpack_require__(210);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"propertyOf\", function() { return __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__matcher_js__ = __webpack_require__(55);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matches\", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__times_js__ = __webpack_require__(211);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"times\", function() { return __WEBPACK_IMPORTED_MODULE_50__times_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__random_js__ = __webpack_require__(128);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return __WEBPACK_IMPORTED_MODULE_51__random_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__now_js__ = __webpack_require__(81);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return __WEBPACK_IMPORTED_MODULE_52__now_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__escape_js__ = __webpack_require__(212);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"escape\", function() { return __WEBPACK_IMPORTED_MODULE_53__escape_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__unescape_js__ = __webpack_require__(213);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unescape\", function() { return __WEBPACK_IMPORTED_MODULE_54__unescape_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__ = __webpack_require__(131);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"templateSettings\", function() { return __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__template_js__ = __webpack_require__(215);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"template\", function() { return __WEBPACK_IMPORTED_MODULE_56__template_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__result_js__ = __webpack_require__(216);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"result\", function() { return __WEBPACK_IMPORTED_MODULE_57__result_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__ = __webpack_require__(217);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__chain_js__ = __webpack_require__(218);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"chain\", function() { return __WEBPACK_IMPORTED_MODULE_59__chain_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__iteratee_js__ = __webpack_require__(126);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"iteratee\", function() { return __WEBPACK_IMPORTED_MODULE_60__iteratee_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__partial_js__ = __webpack_require__(56);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"partial\", function() { return __WEBPACK_IMPORTED_MODULE_61__partial_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__bind_js__ = __webpack_require__(133);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bind\", function() { return __WEBPACK_IMPORTED_MODULE_62__bind_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__bindAll_js__ = __webpack_require__(219);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bindAll\", function() { return __WEBPACK_IMPORTED_MODULE_63__bindAll_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__memoize_js__ = __webpack_require__(220);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_64__memoize_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__delay_js__ = __webpack_require__(134);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"delay\", function() { return __WEBPACK_IMPORTED_MODULE_65__delay_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__defer_js__ = __webpack_require__(221);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return __WEBPACK_IMPORTED_MODULE_66__defer_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__throttle_js__ = __webpack_require__(222);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_67__throttle_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__debounce_js__ = __webpack_require__(223);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_68__debounce_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__wrap_js__ = __webpack_require__(224);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return __WEBPACK_IMPORTED_MODULE_69__wrap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__negate_js__ = __webpack_require__(82);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return __WEBPACK_IMPORTED_MODULE_70__negate_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__compose_js__ = __webpack_require__(225);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"compose\", function() { return __WEBPACK_IMPORTED_MODULE_71__compose_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__after_js__ = __webpack_require__(226);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"after\", function() { return __WEBPACK_IMPORTED_MODULE_72__after_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__before_js__ = __webpack_require__(135);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"before\", function() { return __WEBPACK_IMPORTED_MODULE_73__before_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__once_js__ = __webpack_require__(227);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_74__once_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__findKey_js__ = __webpack_require__(136);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findKey\", function() { return __WEBPACK_IMPORTED_MODULE_75__findKey_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__findIndex_js__ = __webpack_require__(83);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_76__findIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__ = __webpack_require__(138);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findLastIndex\", function() { return __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__ = __webpack_require__(139);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortedIndex\", function() { return __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__indexOf_js__ = __webpack_require__(140);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_79__indexOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__ = __webpack_require__(228);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lastIndexOf\", function() { return __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__find_js__ = __webpack_require__(142);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__findWhere_js__ = __webpack_require__(229);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findWhere\", function() { return __WEBPACK_IMPORTED_MODULE_82__findWhere_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__each_js__ = __webpack_require__(28);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__map_js__ = __webpack_require__(33);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"collect\", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__reduce_js__ = __webpack_require__(230);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"foldl\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__ = __webpack_require__(231);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduceRight\", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"foldr\", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__filter_js__ = __webpack_require__(45);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__reject_js__ = __webpack_require__(232);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reject\", function() { return __WEBPACK_IMPORTED_MODULE_88__reject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__every_js__ = __webpack_require__(233);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"all\", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__some_js__ = __webpack_require__(234);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"any\", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__contains_js__ = __webpack_require__(46);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"include\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__invoke_js__ = __webpack_require__(235);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"invoke\", function() { return __WEBPACK_IMPORTED_MODULE_92__invoke_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__pluck_js__ = __webpack_require__(84);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pluck\", function() { return __WEBPACK_IMPORTED_MODULE_93__pluck_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__where_js__ = __webpack_require__(236);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"where\", function() { return __WEBPACK_IMPORTED_MODULE_94__where_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__max_js__ = __webpack_require__(144);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return __WEBPACK_IMPORTED_MODULE_95__max_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__min_js__ = __webpack_require__(237);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return __WEBPACK_IMPORTED_MODULE_96__min_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__shuffle_js__ = __webpack_require__(238);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return __WEBPACK_IMPORTED_MODULE_97__shuffle_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__sample_js__ = __webpack_require__(145);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sample\", function() { return __WEBPACK_IMPORTED_MODULE_98__sample_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__sortBy_js__ = __webpack_require__(239);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_99__sortBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__groupBy_js__ = __webpack_require__(240);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_100__groupBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__indexBy_js__ = __webpack_require__(241);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexBy\", function() { return __WEBPACK_IMPORTED_MODULE_101__indexBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__countBy_js__ = __webpack_require__(242);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"countBy\", function() { return __WEBPACK_IMPORTED_MODULE_102__countBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__partition_js__ = __webpack_require__(243);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return __WEBPACK_IMPORTED_MODULE_103__partition_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__toArray_js__ = __webpack_require__(244);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_104__toArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_105__size_js__ = __webpack_require__(245);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_105__size_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_106__pick_js__ = __webpack_require__(146);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_106__pick_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_107__omit_js__ = __webpack_require__(247);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return __WEBPACK_IMPORTED_MODULE_107__omit_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_108__first_js__ = __webpack_require__(248);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"first\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"take\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_109__initial_js__ = __webpack_require__(147);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"initial\", function() { return __WEBPACK_IMPORTED_MODULE_109__initial_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_110__last_js__ = __webpack_require__(249);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_110__last_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_111__rest_js__ = __webpack_require__(148);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"rest\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tail\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"drop\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_112__compact_js__ = __webpack_require__(250);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"compact\", function() { return __WEBPACK_IMPORTED_MODULE_112__compact_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_113__flatten_js__ = __webpack_require__(251);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_113__flatten_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_114__without_js__ = __webpack_require__(252);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"without\", function() { return __WEBPACK_IMPORTED_MODULE_114__without_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_115__uniq_js__ = __webpack_require__(150);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_116__union_js__ = __webpack_require__(253);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_116__union_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_117__intersection_js__ = __webpack_require__(254);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return __WEBPACK_IMPORTED_MODULE_117__intersection_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_118__difference_js__ = __webpack_require__(149);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_118__difference_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_119__unzip_js__ = __webpack_require__(151);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unzip\", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_120__zip_js__ = __webpack_require__(255);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return __WEBPACK_IMPORTED_MODULE_120__zip_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_121__object_js__ = __webpack_require__(256);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"object\", function() { return __WEBPACK_IMPORTED_MODULE_121__object_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_122__range_js__ = __webpack_require__(257);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return __WEBPACK_IMPORTED_MODULE_122__range_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_123__chunk_js__ = __webpack_require__(258);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"chunk\", function() { return __WEBPACK_IMPORTED_MODULE_123__chunk_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_124__mixin_js__ = __webpack_require__(259);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mixin\", function() { return __WEBPACK_IMPORTED_MODULE_124__mixin_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__ = __webpack_require__(260);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__[\"a\"]; });\n// Named Exports\n// =============\n\n// Underscore.js 1.12.1\n// https://underscorejs.org\n// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n// Baseline setup.\n\n\n\n// Object Functions\n// ----------------\n// Our most fundamental functions operate on any JavaScript object.\n// Most functions in Underscore depend on at least one function in this section.\n\n// A group of functions that check the types of core JavaScript values.\n// These are often informally referred to as the \"isType\" functions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Functions that treat an object as a dictionary of key-value pairs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Utility Functions\n// -----------------\n// A bit of a grab bag: Predicate-generating functions for use with filters and\n// loops, string escaping and templating, create random numbers and unique ids,\n// and functions that facilitate Underscore's chaining and iteration conventions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Function (ahem) Functions\n// -------------------------\n// These functions take a function as an argument and return a new function\n// as the result. Also known as higher-order functions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Finders\n// -------\n// Functions that extract (the position of) a single element from an object\n// or array based on some criterion.\n\n\n\n\n\n\n\n\n\n// Collection Functions\n// --------------------\n// Functions that work on any collection of elements: either an array, or\n// an object of key-value pairs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// `_.pick` and `_.omit` are actually object functions, but we put\n// them here in order to create a more natural reading order in the\n// monolithic build as they depend on `_.contains`.\n\n\n\n// Array Functions\n// ---------------\n// Functions that operate on arrays (and array-likes) only, because they’re\n// expressed in terms of operations on an ordered list of values.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// OOP\n// ---\n// These modules support the \"object-oriented\" calling style. See also\n// `underscore.js` and `index-default.js`.\n\n\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('String'));\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__ = __webpack_require__(109);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__ = __webpack_require__(41);\n\n\n\n\n\nvar isDataView = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj.getInt8) && Object(__WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__[\"a\" /* default */])(obj.buffer);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__[\"a\" /* hasStringTagBug */] ? ie10IsDataView : isDataView);\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(22);\n\n\n\nvar isArguments = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(obj, 'callee');\n };\n }\n}());\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isArguments);\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(114);\n\n\n// Internal helper to obtain the `byteLength` property of an object.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__[\"a\" /* default */])('byteLength'));\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = ie11fingerprint;\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return mapMethods; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return weakMapMethods; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return setMethods; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__allKeys_js__ = __webpack_require__(42);\n\n\n\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = Object(__WEBPACK_IMPORTED_MODULE_2__allKeys_js__[\"a\" /* default */])(obj);\n if (Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createAssigner;\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(3);\n\n\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = deepGet;\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = identity;\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = property;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__deepGet_js__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(43);\n\n\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n return function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__deepGet_js__[\"a\" /* default */])(obj, path);\n };\n}\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// A (possibly faster) way to get the current timestamp as an integer.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Date.now || function() {\n return new Date().getTime();\n});\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = negate;\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(137);\n\n\n// Returns the first index on an array-like that passes a truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__[\"a\" /* default */])(1));\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = pluck;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__map_js__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__property_js__ = __webpack_require__(80);\n\n\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__map_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__property_js__[\"a\" /* default */])(key));\n}\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(17);\nvar core = __webpack_require__(2);\nvar fails = __webpack_require__(39);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(271), __esModule: true };\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.f = __webpack_require__(7);\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(6);\nvar core = __webpack_require__(2);\nvar LIBRARY = __webpack_require__(37);\nvar wksExt = __webpack_require__(87);\nvar defineProperty = __webpack_require__(19).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(89);\nvar createDesc = __webpack_require__(49);\nvar toIObject = __webpack_require__(25);\nvar toPrimitive = __webpack_require__(63);\nvar has = __webpack_require__(24);\nvar IE8_DOM_DEFINE = __webpack_require__(93);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(21) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(37);\nvar $export = __webpack_require__(17);\nvar redefine = __webpack_require__(94);\nvar hide = __webpack_require__(23);\nvar Iterators = __webpack_require__(30);\nvar $iterCreate = __webpack_require__(168);\nvar setToStringTag = __webpack_require__(52);\nvar getPrototypeOf = __webpack_require__(98);\nvar ITERATOR = __webpack_require__(7)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(21) && !__webpack_require__(39)(function () {\n return Object.defineProperty(__webpack_require__(62)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(23);\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(24);\nvar toIObject = __webpack_require__(25);\nvar arrayIndexOf = __webpack_require__(171)(false);\nvar IE_PROTO = __webpack_require__(65)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(60);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(6).document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(24);\nvar toObject = __webpack_require__(53);\nvar IE_PROTO = __webpack_require__(65)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(68);\nvar ITERATOR = __webpack_require__(7)('iterator');\nvar Iterators = __webpack_require__(30);\nmodule.exports = __webpack_require__(2).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(16);\nvar aFunction = __webpack_require__(48);\nvar SPECIES = __webpack_require__(7)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(38);\nvar invoke = __webpack_require__(181);\nvar html = __webpack_require__(97);\nvar cel = __webpack_require__(62);\nvar global = __webpack_require__(6);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(40)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(16);\nvar isObject = __webpack_require__(20);\nvar newPromiseCapability = __webpack_require__(69);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isUndefined;\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isBoolean;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj) === '[object Boolean]';\n}\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Number'));\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Symbol'));\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('ArrayBuffer'));\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNaN;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isNumber_js__ = __webpack_require__(107);\n\n\n\n// Is the given value `NaN`?\nfunction isNaN(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isNumber_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"g\" /* _isNaN */])(obj);\n}\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isDataView_js__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant_js__ = __webpack_require__(112);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__ = __webpack_require__(197);\n\n\n\n\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"l\" /* nativeIsView */] ? (Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"l\" /* nativeIsView */])(obj) && !Object(__WEBPACK_IMPORTED_MODULE_1__isDataView_js__[\"a\" /* default */])(obj)) :\n Object(__WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__[\"a\" /* default */])(obj) && typedArrayPattern.test(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj));\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"r\" /* supportsArrayBuffer */] ? isTypedArray : Object(__WEBPACK_IMPORTED_MODULE_2__constant_js__[\"a\" /* default */])(false));\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = constant;\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createSizePropertyCheck;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"b\" /* MAX_ARRAY_INDEX */];\n }\n}\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = shallowProperty;\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = collectNonEnumProps;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(22);\n\n\n\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"n\" /* nonEnumerableProps */].length;\n var constructor = obj.constructor;\n var proto = Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(constructor) && constructor.prototype || __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"c\" /* ObjProto */];\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__[\"a\" /* default */])(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"n\" /* nonEnumerableProps */][nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isMatch;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(3);\n\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = invert;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(3);\n\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = functions;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(13);\n\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(42);\n\n\n\n// Extend a given object with all the properties in passed-in object(s).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(42);\n\n\n\n// Fill in a given object with default properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__[\"a\" /* default */], true));\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = baseCreate;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(1);\n\n\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(prototype)) return {};\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"j\" /* nativeCreate */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"j\" /* nativeCreate */])(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = clone;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__extend_js__ = __webpack_require__(119);\n\n\n\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return obj;\n return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(obj) ? obj.slice() : Object(__WEBPACK_IMPORTED_MODULE_2__extend_js__[\"a\" /* default */])({}, obj);\n}\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = get;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__toPath_js__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__deepGet_js__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isUndefined_js__ = __webpack_require__(105);\n\n\n\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = Object(__WEBPACK_IMPORTED_MODULE_1__deepGet_js__[\"a\" /* default */])(object, Object(__WEBPACK_IMPORTED_MODULE_0__toPath_js__[\"a\" /* default */])(path));\n return Object(__WEBPACK_IMPORTED_MODULE_2__isUndefined_js__[\"a\" /* default */])(value) ? defaultValue : value;\n}\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toPath;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(27);\n\n\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath(path) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(path) ? path : [path];\n}\n__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].toPath = toPath;\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = baseIteratee;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity_js__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArray_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__matcher_js__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__property_js__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__ = __webpack_require__(44);\n\n\n\n\n\n\n\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return __WEBPACK_IMPORTED_MODULE_0__identity_js__[\"a\" /* default */];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__[\"a\" /* default */])(value, context, argCount);\n if (Object(__WEBPACK_IMPORTED_MODULE_2__isObject_js__[\"a\" /* default */])(value) && !Object(__WEBPACK_IMPORTED_MODULE_3__isArray_js__[\"a\" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_4__matcher_js__[\"a\" /* default */])(value);\n return Object(__WEBPACK_IMPORTED_MODULE_5__property_js__[\"a\" /* default */])(value);\n}\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = iteratee;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(125);\n\n\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__[\"a\" /* default */])(value, context, Infinity);\n}\n__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee = iteratee;\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = noop;\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = random;\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createEscaper;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(3);\n\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// Internal list of HTML entities for escaping.\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;'\n});\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n});\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = executeBound;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isObject_js__ = __webpack_require__(26);\n\n\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__[\"a\" /* default */])(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isObject_js__[\"a\" /* default */])(result)) return result;\n return self;\n}\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__executeBound_js__ = __webpack_require__(132);\n\n\n\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, context, args) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(func)) throw new TypeError('Bind must be called on a function');\n var bound = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(callArgs) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__executeBound_js__[\"a\" /* default */])(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n}));\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n}));\n\n\n/***/ }),\n/* 135 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = before;\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n\n/***/ }),\n/* 136 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = findKey;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(3);\n\n\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createPredicateIndexFinder;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(14);\n\n\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var length = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */])(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(137);\n\n\n// Returns the last index on an array-like that passes a truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__[\"a\" /* default */])(-1));\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sortedIndex;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(14);\n\n\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */])(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__ = __webpack_require__(139);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__ = __webpack_require__(141);\n\n\n\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__[\"a\" /* default */])(1, __WEBPACK_IMPORTED_MODULE_1__findIndex_js__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createIndexFinder;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isNaN_js__ = __webpack_require__(110);\n\n\n\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"q\" /* slice */].call(array, i, length), __WEBPACK_IMPORTED_MODULE_2__isNaN_js__[\"a\" /* default */]);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = find;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__findKey_js__ = __webpack_require__(136);\n\n\n\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? __WEBPACK_IMPORTED_MODULE_1__findIndex_js__[\"a\" /* default */] : __WEBPACK_IMPORTED_MODULE_2__findKey_js__[\"a\" /* default */];\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createReduce;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(44);\n\n\n\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__[\"a\" /* default */])(iteratee, context, 4), memo, initial);\n };\n}\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = max;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(28);\n\n\n\n\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_3__each_js__[\"a\" /* default */])(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sample;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_js__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__values_js__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__random_js__ = __webpack_require__(128);\n\n\n\n\n\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_2__values_js__[\"a\" /* default */])(obj);\n return obj[Object(__WEBPACK_IMPORTED_MODULE_4__random_js__[\"a\" /* default */])(obj.length - 1)];\n }\n var sample = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? Object(__WEBPACK_IMPORTED_MODULE_1__clone_js__[\"a\" /* default */])(obj) : Object(__WEBPACK_IMPORTED_MODULE_2__values_js__[\"a\" /* default */])(obj);\n var length = Object(__WEBPACK_IMPORTED_MODULE_3__getLength_js__[\"a\" /* default */])(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = Object(__WEBPACK_IMPORTED_MODULE_4__random_js__[\"a\" /* default */])(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__allKeys_js__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__ = __webpack_require__(246);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten_js__ = __webpack_require__(32);\n\n\n\n\n\n\n\n// Return a copy of the object only containing the allowed properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(iteratee)) {\n if (keys.length > 1) iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__[\"a\" /* default */])(iteratee, keys[1]);\n keys = Object(__WEBPACK_IMPORTED_MODULE_3__allKeys_js__[\"a\" /* default */])(obj);\n } else {\n iteratee = __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__[\"a\" /* default */];\n keys = Object(__WEBPACK_IMPORTED_MODULE_5__flatten_js__[\"a\" /* default */])(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n}));\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = initial;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = rest;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, n == null || guard ? 1 : n);\n}\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__filter_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(46);\n\n\n\n\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(array, rest) {\n rest = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__[\"a\" /* default */])(rest, true, true);\n return Object(__WEBPACK_IMPORTED_MODULE_2__filter_js__[\"a\" /* default */])(array, function(value){\n return !Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(rest, value);\n });\n}));\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = uniq;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isBoolean_js__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(46);\n\n\n\n\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isBoolean_js__[\"a\" /* default */])(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = Object(__WEBPACK_IMPORTED_MODULE_1__cb_js__[\"a\" /* default */])(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_2__getLength_js__[\"a\" /* default */])(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n\n/***/ }),\n/* 151 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = unzip;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__max_js__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__pluck_js__ = __webpack_require__(84);\n\n\n\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = array && Object(__WEBPACK_IMPORTED_MODULE_0__max_js__[\"a\" /* default */])(array, __WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */]).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = Object(__WEBPACK_IMPORTED_MODULE_2__pluck_js__[\"a\" /* default */])(array, index);\n }\n return result;\n}\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chainResult;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */])(obj).chain() : obj;\n}\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(262), __esModule: true };\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar rng = __webpack_require__(264);\nvar bytesToUuid = __webpack_require__(265);\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(268), __esModule: true };\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = '4.12.2';\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _require = __webpack_require__(36),\n getAdapter = _require.getAdapter;\n\nvar syncApiNames = ['getItem', 'setItem', 'removeItem', 'clear'];\n\nvar localStorage = {\n get async() {\n return getAdapter('storage').async;\n }\n};\n\n// wrap sync apis with async ones.\nsyncApiNames.forEach(function (apiName) {\n localStorage[apiName + 'Async'] = function () {\n var storage = getAdapter('storage');\n return _promise2.default.resolve(storage[apiName].apply(storage, arguments));\n };\n\n localStorage[apiName] = function () {\n var storage = getAdapter('storage');\n if (!storage.async) {\n return storage[apiName].apply(storage, arguments);\n }\n var error = new Error('Synchronous API [' + apiName + '] is not available in this runtime.');\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n };\n});\n\nmodule.exports = localStorage;\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar storage = __webpack_require__(158);\nvar AV = __webpack_require__(34);\n\nvar removeAsync = exports.removeAsync = storage.removeItemAsync.bind(storage);\n\nvar getCacheData = function getCacheData(cacheData, key) {\n try {\n cacheData = JSON.parse(cacheData);\n } catch (e) {\n return null;\n }\n if (cacheData) {\n var expired = cacheData.expiredAt && cacheData.expiredAt < Date.now();\n if (!expired) {\n return cacheData.value;\n }\n return removeAsync(key).then(function () {\n return null;\n });\n }\n return null;\n};\n\nexports.getAsync = function (key) {\n key = 'AV/' + AV.applicationId + '/' + key;\n return storage.getItemAsync(key).then(function (cache) {\n return getCacheData(cache, key);\n });\n};\n\nexports.setAsync = function (key, value, ttl) {\n var cache = { value: value };\n if (typeof ttl === 'number') {\n cache.expiredAt = Date.now() + ttl;\n }\n return storage.setItemAsync('AV/' + AV.applicationId + '/' + key, (0, _stringify2.default)(cache));\n};\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(95);\nvar hiddenKeys = __webpack_require__(67).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(305), __esModule: true };\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports) {\n\nvar charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(165);\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*!\n * LeanCloud JavaScript SDK\n * https://leancloud.cn\n *\n * Copyright 2016 LeanCloud.cn, Inc.\n * The LeanCloud JavaScript SDK is freely distributable under the MIT license.\n */\nvar _ = __webpack_require__(0);\n\nvar AV = __webpack_require__(34);\n\nAV._ = _;\nAV.version = __webpack_require__(156);\nAV.Promise = _promise2.default;\nAV.localStorage = __webpack_require__(158);\nAV.Cache = __webpack_require__(159);\nAV.Error = __webpack_require__(29);\n\n__webpack_require__(270);\n__webpack_require__(286)(AV);\n__webpack_require__(287)(AV);\n__webpack_require__(288)(AV);\n__webpack_require__(289)(AV);\n__webpack_require__(290)(AV);\n__webpack_require__(291)(AV);\n__webpack_require__(313)(AV);\n__webpack_require__(321)(AV);\n__webpack_require__(322)(AV);\n__webpack_require__(324)(AV);\n__webpack_require__(325)(AV);\n__webpack_require__(326)(AV);\n__webpack_require__(327)(AV);\n__webpack_require__(328)(AV);\n__webpack_require__(329)(AV);\n__webpack_require__(330)(AV);\n__webpack_require__(331)(AV);\n__webpack_require__(332)(AV);\n\nAV.Conversation = __webpack_require__(333);\n__webpack_require__(334);\nmodule.exports = AV;\n\n/**\n * Options to controll the authentication for an operation\n * @typedef {Object} AuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n */\n\n/**\n * Options to controll the authentication for an SMS operation\n * @typedef {Object} SMSAuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha}\n */\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(91);\n__webpack_require__(47);\n__webpack_require__(54);\n__webpack_require__(176);\n__webpack_require__(187);\n__webpack_require__(188);\nmodule.exports = __webpack_require__(2).Promise;\n\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(60);\nvar defined = __webpack_require__(61);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(64);\nvar descriptor = __webpack_require__(49);\nvar setToStringTag = __webpack_require__(52);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(23)(IteratorPrototype, __webpack_require__(7)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(19);\nvar anObject = __webpack_require__(16);\nvar getKeys = __webpack_require__(50);\n\nmodule.exports = __webpack_require__(21) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(40);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(25);\nvar toLength = __webpack_require__(96);\nvar toAbsoluteIndex = __webpack_require__(172);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(60);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(174);\nvar step = __webpack_require__(175);\nvar Iterators = __webpack_require__(30);\nvar toIObject = __webpack_require__(25);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(92)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(37);\nvar global = __webpack_require__(6);\nvar ctx = __webpack_require__(38);\nvar classof = __webpack_require__(68);\nvar $export = __webpack_require__(17);\nvar isObject = __webpack_require__(20);\nvar aFunction = __webpack_require__(48);\nvar anInstance = __webpack_require__(177);\nvar forOf = __webpack_require__(178);\nvar speciesConstructor = __webpack_require__(100);\nvar task = __webpack_require__(101).set;\nvar microtask = __webpack_require__(182)();\nvar newPromiseCapabilityModule = __webpack_require__(69);\nvar perform = __webpack_require__(102);\nvar userAgent = __webpack_require__(183);\nvar promiseResolve = __webpack_require__(103);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(7)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(184)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(52)($Promise, PROMISE);\n__webpack_require__(185)(PROMISE);\nWrapper = __webpack_require__(2)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(186)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(38);\nvar call = __webpack_require__(179);\nvar isArrayIter = __webpack_require__(180);\nvar anObject = __webpack_require__(16);\nvar toLength = __webpack_require__(96);\nvar getIterFn = __webpack_require__(99);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(16);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(30);\nvar ITERATOR = __webpack_require__(7)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports) {\n\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(6);\nvar macrotask = __webpack_require__(101).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(40)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(6);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hide = __webpack_require__(23);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(6);\nvar core = __webpack_require__(2);\nvar dP = __webpack_require__(19);\nvar DESCRIPTORS = __webpack_require__(21);\nvar SPECIES = __webpack_require__(7)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(7)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(17);\nvar core = __webpack_require__(2);\nvar global = __webpack_require__(6);\nvar speciesConstructor = __webpack_require__(100);\nvar promiseResolve = __webpack_require__(103);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(17);\nvar newPromiseCapability = __webpack_require__(69);\nvar perform = __webpack_require__(102);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_js__ = __webpack_require__(70);\n// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\n\n\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = Object(__WEBPACK_IMPORTED_MODULE_0__index_js__[\"mixin\"])(__WEBPACK_IMPORTED_MODULE_0__index_js__);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\n/* harmony default export */ __webpack_exports__[\"a\"] = (_);\n\n\n/***/ }),\n/* 190 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNull;\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isElement;\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Date'));\n\n\n/***/ }),\n/* 193 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('RegExp'));\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Error'));\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Object'));\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isFinite;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isSymbol_js__ = __webpack_require__(108);\n\n\n\n// Is a given object a finite number?\nfunction isFinite(obj) {\n return !Object(__WEBPACK_IMPORTED_MODULE_1__isSymbol_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"f\" /* _isFinite */])(obj) && !isNaN(parseFloat(obj));\n}\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getByteLength_js__ = __webpack_require__(74);\n\n\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getByteLength_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isEmpty;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(71);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keys_js__ = __webpack_require__(3);\n\n\n\n\n\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(obj);\n if (typeof length == 'number' && (\n Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__[\"a\" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__[\"a\" /* default */])(obj)\n )) return length === 0;\n return Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__keys_js__[\"a\" /* default */])(obj)) === 0;\n}\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isEqual;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getByteLength_js__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__ = __webpack_require__(111);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isDataView_js__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__keys_js__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__has_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__toBufferView_js__ = __webpack_require__(200);\n\n\n\n\n\n\n\n\n\n\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]) a = a._wrapped;\n if (b instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"t\" /* toString */].call(a);\n if (className !== __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"t\" /* toString */].call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (__WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__[\"a\" /* hasStringTagBug */] && className == '[object Object]' && Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__[\"a\" /* default */])(a)) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__[\"a\" /* default */])(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"d\" /* SymbolProto */].valueOf.call(a) === __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"d\" /* SymbolProto */].valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__[\"a\" /* default */])(a), Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__[\"a\" /* default */])(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && Object(__WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__[\"a\" /* default */])(a)) {\n var byteLength = Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__[\"a\" /* default */])(a);\n if (byteLength !== Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__[\"a\" /* default */])(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__[\"a\" /* default */])(aCtor) && aCtor instanceof aCtor &&\n Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__[\"a\" /* default */])(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__[\"a\" /* default */])(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__[\"a\" /* default */])(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(Object(__WEBPACK_IMPORTED_MODULE_8__has_js__[\"a\" /* default */])(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toBufferView;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getByteLength_js__ = __webpack_require__(74);\n\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n Object(__WEBPACK_IMPORTED_MODULE_0__getByteLength_js__[\"a\" /* default */])(bufferSource)\n );\n}\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(75);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"b\" /* mapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Map'));\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(75);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"d\" /* weakMapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('WeakMap'));\n\n\n/***/ }),\n/* 203 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(75);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"c\" /* setMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Set'));\n\n\n/***/ }),\n/* 204 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('WeakSet'));\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = pairs;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(3);\n\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = create;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__extendOwn_js__ = __webpack_require__(77);\n\n\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__[\"a\" /* default */])(prototype);\n if (props) Object(__WEBPACK_IMPORTED_MODULE_1__extendOwn_js__[\"a\" /* default */])(result, props);\n return result;\n}\n\n\n/***/ }),\n/* 207 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = tap;\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n\n/***/ }),\n/* 208 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = has;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(43);\n\n\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__[\"a\" /* default */])(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mapObject;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(3);\n\n\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = propertyOf;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__noop_js__ = __webpack_require__(127);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__get_js__ = __webpack_require__(123);\n\n\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return __WEBPACK_IMPORTED_MODULE_0__noop_js__[\"a\" /* default */];\n return function(path) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__get_js__[\"a\" /* default */])(obj, path);\n };\n}\n\n\n/***/ }),\n/* 211 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = times;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(44);\n\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__[\"a\" /* default */])(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n\n/***/ }),\n/* 212 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(130);\n\n\n\n// Function for escaping strings to HTML interpolation.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 213 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__ = __webpack_require__(214);\n\n\n\n// Function for unescaping strings from HTML interpolation.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 214 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__invert_js__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(130);\n\n\n\n// Internal list of HTML entities for unescaping.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__invert_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 215 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = template;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defaults_js__ = __webpack_require__(120);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__templateSettings_js__ = __webpack_require__(131);\n\n\n\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = Object(__WEBPACK_IMPORTED_MODULE_0__defaults_js__[\"a\" /* default */])({}, settings, __WEBPACK_IMPORTED_MODULE_1__underscore_js__[\"a\" /* default */].templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n if (!bareIdentifier.test(argument)) throw new Error(argument);\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, __WEBPACK_IMPORTED_MODULE_1__underscore_js__[\"a\" /* default */]);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n\n/***/ }),\n/* 216 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = result;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(43);\n\n\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n var length = path.length;\n if (!length) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n\n/***/ }),\n/* 217 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = uniqueId;\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chain;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */])(obj);\n instance._chain = true;\n return instance;\n}\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bind_js__ = __webpack_require__(133);\n\n\n\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n keys = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__[\"a\" /* default */])(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = Object(__WEBPACK_IMPORTED_MODULE_2__bind_js__[\"a\" /* default */])(obj[key], obj);\n }\n return obj;\n}));\n\n\n/***/ }),\n/* 220 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = memoize;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(22);\n\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__[\"a\" /* default */])(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n\n/***/ }),\n/* 221 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__delay_js__ = __webpack_require__(134);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(10);\n\n\n\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__delay_js__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__underscore_js__[\"a\" /* default */], 1));\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = throttle;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__now_js__ = __webpack_require__(81);\n\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : Object(__WEBPACK_IMPORTED_MODULE_0__now_js__[\"a\" /* default */])();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = Object(__WEBPACK_IMPORTED_MODULE_0__now_js__[\"a\" /* default */])();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = debounce;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__now_js__ = __webpack_require__(81);\n\n\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__[\"a\" /* default */])() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(_args) {\n context = this;\n args = _args;\n previous = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__[\"a\" /* default */])();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = wrap;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(56);\n\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(wrapper, func);\n}\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = compose;\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n\n/***/ }),\n/* 226 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = after;\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__before_js__ = __webpack_require__(135);\n\n\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__before_js__[\"a\" /* default */], 2));\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__ = __webpack_require__(141);\n\n\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__[\"a\" /* default */])(-1, __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 229 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = findWhere;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__find_js__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(55);\n\n\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__find_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__[\"a\" /* default */])(attrs));\n}\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(143);\n\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__[\"a\" /* default */])(1));\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(143);\n\n\n// The right-associative version of reduce, also known as `foldr`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__[\"a\" /* default */])(-1));\n\n\n/***/ }),\n/* 232 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = reject;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__negate_js__ = __webpack_require__(82);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(8);\n\n\n\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__negate_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(predicate)), context);\n}\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = every;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(3);\n\n\n\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n\n/***/ }),\n/* 234 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = some;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(3);\n\n\n\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n\n/***/ }),\n/* 235 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__deepGet_js__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__toPath_js__ = __webpack_require__(43);\n\n\n\n\n\n\n// Invoke a method (with arguments) on every item in a collection.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, path, args) {\n var contextPath, func;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(path)) {\n func = path;\n } else {\n path = Object(__WEBPACK_IMPORTED_MODULE_4__toPath_js__[\"a\" /* default */])(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return Object(__WEBPACK_IMPORTED_MODULE_2__map_js__[\"a\" /* default */])(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = Object(__WEBPACK_IMPORTED_MODULE_3__deepGet_js__[\"a\" /* default */])(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n}));\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = where;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(55);\n\n\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__[\"a\" /* default */])(attrs));\n}\n\n\n/***/ }),\n/* 237 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = min;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(28);\n\n\n\n\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_3__each_js__[\"a\" /* default */])(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n/***/ }),\n/* 238 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = shuffle;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sample_js__ = __webpack_require__(145);\n\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__sample_js__[\"a\" /* default */])(obj, Infinity);\n}\n\n\n/***/ }),\n/* 239 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sortBy;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pluck_js__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(33);\n\n\n\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n return Object(__WEBPACK_IMPORTED_MODULE_1__pluck_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__map_js__[\"a\" /* default */])(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(22);\n\n\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(result, key)) result[key].push(value); else result[key] = [value];\n}));\n\n\n/***/ }),\n/* 241 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(57);\n\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n result[key] = value;\n}));\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(22);\n\n\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(result, key)) result[key]++; else result[key] = 1;\n}));\n\n\n/***/ }),\n/* 243 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(57);\n\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true));\n\n\n/***/ }),\n/* 244 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toArray;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArray_js__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(71);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map_js__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__identity_js__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__values_js__ = __webpack_require__(31);\n\n\n\n\n\n\n\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (Object(__WEBPACK_IMPORTED_MODULE_0__isArray_js__[\"a\" /* default */])(obj)) return __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"q\" /* slice */].call(obj);\n if (Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__[\"a\" /* default */])(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (Object(__WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__[\"a\" /* default */])(obj)) return Object(__WEBPACK_IMPORTED_MODULE_4__map_js__[\"a\" /* default */])(obj, __WEBPACK_IMPORTED_MODULE_5__identity_js__[\"a\" /* default */]);\n return Object(__WEBPACK_IMPORTED_MODULE_6__values_js__[\"a\" /* default */])(obj);\n}\n\n\n/***/ }),\n/* 245 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = size;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(3);\n\n\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj.length : Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj).length;\n}\n\n\n/***/ }),\n/* 246 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = keyInObj;\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n\n/***/ }),\n/* 247 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__negate_js__ = __webpack_require__(82);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__map_js__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__flatten_js__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__contains_js__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__pick_js__ = __webpack_require__(146);\n\n\n\n\n\n\n\n\n// Return a copy of the object without the disallowed properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n var iteratee = keys[0], context;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(iteratee)) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__negate_js__[\"a\" /* default */])(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = Object(__WEBPACK_IMPORTED_MODULE_3__map_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__flatten_js__[\"a\" /* default */])(keys, false, false), String);\n iteratee = function(value, key) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__contains_js__[\"a\" /* default */])(keys, key);\n };\n }\n return Object(__WEBPACK_IMPORTED_MODULE_6__pick_js__[\"a\" /* default */])(obj, iteratee, context);\n}));\n\n\n/***/ }),\n/* 248 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = first;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__initial_js__ = __webpack_require__(147);\n\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return Object(__WEBPACK_IMPORTED_MODULE_0__initial_js__[\"a\" /* default */])(array, array.length - n);\n}\n\n\n/***/ }),\n/* 249 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = last;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rest_js__ = __webpack_require__(148);\n\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return Object(__WEBPACK_IMPORTED_MODULE_0__rest_js__[\"a\" /* default */])(array, Math.max(0, array.length - n));\n}\n\n\n/***/ }),\n/* 250 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = compact;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(45);\n\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(array, Boolean);\n}\n\n\n/***/ }),\n/* 251 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = flatten;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__flatten_js__ = __webpack_require__(32);\n\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__flatten_js__[\"a\" /* default */])(array, depth, false);\n}\n\n\n/***/ }),\n/* 252 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference_js__ = __webpack_require__(149);\n\n\n\n// Return a version of the array that does not contain the specified value(s).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(array, otherArrays) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__difference_js__[\"a\" /* default */])(array, otherArrays);\n}));\n\n\n/***/ }),\n/* 253 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__uniq_js__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__flatten_js__ = __webpack_require__(32);\n\n\n\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(arrays) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__uniq_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__flatten_js__[\"a\" /* default */])(arrays, true, true));\n}));\n\n\n/***/ }),\n/* 254 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = intersection;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains_js__ = __webpack_require__(46);\n\n\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(array); i < length; i++) {\n var item = array[i];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__[\"a\" /* default */])(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__[\"a\" /* default */])(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n\n/***/ }),\n/* 255 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unzip_js__ = __webpack_require__(151);\n\n\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unzip_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 256 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = object;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(14);\n\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n\n/***/ }),\n/* 257 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = range;\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n\n/***/ }),\n/* 258 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chunk;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(1);\n\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, i, i += count));\n }\n return result;\n}\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mixin;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functions_js__ = __webpack_require__(118);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__chainResult_js__ = __webpack_require__(152);\n\n\n\n\n\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__functions_js__[\"a\" /* default */])(obj), function(name) {\n var func = __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */][name] = obj[name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var args = [this._wrapped];\n __WEBPACK_IMPORTED_MODULE_3__setup_js__[\"o\" /* push */].apply(args, arguments);\n return Object(__WEBPACK_IMPORTED_MODULE_4__chainResult_js__[\"a\" /* default */])(this, func.apply(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */], args));\n };\n });\n return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */];\n}\n\n\n/***/ }),\n/* 260 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__setup_js__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__chainResult_js__ = __webpack_require__(152);\n\n\n\n\n\n// Add all mutator `Array` functions to the wrapper.\nObject(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__[\"a\" /* ArrayProto */][name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__[\"a\" /* default */])(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\nObject(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(['concat', 'join', 'slice'], function(name) {\n var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__[\"a\" /* ArrayProto */][name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__[\"a\" /* default */])(this, obj);\n };\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]);\n\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(2);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(263);\nmodule.exports = __webpack_require__(2).Object.keys;\n\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(53);\nvar $keys = __webpack_require__(50);\n\n__webpack_require__(85)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports) {\n\n// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports) {\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = __webpack_require__(267);\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(269);\nmodule.exports = __webpack_require__(2).Object.getPrototypeOf;\n\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(53);\nvar $getPrototypeOf = __webpack_require__(98);\n\n__webpack_require__(85)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _defineProperty = __webpack_require__(86);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AV = __webpack_require__(34);\nvar AppRouter = __webpack_require__(273);\n\nvar _require = __webpack_require__(15),\n isNullOrUndefined = _require.isNullOrUndefined;\n\nvar _require2 = __webpack_require__(0),\n extend = _require2.extend,\n isObject = _require2.isObject,\n isEmpty = _require2.isEmpty;\n\nvar isCNApp = function isCNApp(appId) {\n return appId.slice(-9) !== '-MdYXbMMI';\n};\n\nvar fillServerURLs = function fillServerURLs(url) {\n return {\n push: url,\n stats: url,\n engine: url,\n api: url,\n rtm: url\n };\n};\n\nfunction getDefaultServerURLs(appId) {\n if (isCNApp(appId)) {\n return {};\n }\n var id = appId.slice(0, 8).toLowerCase();\n var domain = 'lncldglobal.com';\n return {\n push: 'https://' + id + '.push.' + domain,\n stats: 'https://' + id + '.stats.' + domain,\n engine: 'https://' + id + '.engine.' + domain,\n api: 'https://' + id + '.api.' + domain,\n rtm: 'https://' + id + '.rtm.' + domain\n };\n}\n\nvar _disableAppRouter = false;\nvar _initialized = false;\n\n/**\n * URLs for services\n * @typedef {Object} ServerURLs\n * @property {String} [api] serverURL for API service\n * @property {String} [engine] serverURL for engine service\n * @property {String} [stats] serverURL for stats service\n * @property {String} [push] serverURL for push service\n * @property {String} [rtm] serverURL for LiveQuery service\n */\n\n/**\n * Call this method first to set up your authentication tokens for AV.\n * You can get your app keys from the LeanCloud dashboard on http://leancloud.cn .\n * @function AV.init\n * @param {Object} options\n * @param {String} options.appId application id\n * @param {String} options.appKey application key\n * @param {String} [options.masterKey] application master key\n * @param {Boolean} [options.production]\n * @param {String|ServerURLs} [options.serverURL] URLs for services. if a string was given, it will be applied for all services.\n * @param {Boolean} [options.disableCurrentUser]\n */\nAV.init = function init(options) {\n if (!isObject(options)) {\n return AV.init({\n appId: options,\n appKey: arguments.length <= 1 ? undefined : arguments[1],\n masterKey: arguments.length <= 2 ? undefined : arguments[2]\n });\n }\n var appId = options.appId,\n appKey = options.appKey,\n masterKey = options.masterKey,\n hookKey = options.hookKey,\n serverURL = options.serverURL,\n _options$serverURLs = options.serverURLs,\n serverURLs = _options$serverURLs === undefined ? serverURL : _options$serverURLs,\n disableCurrentUser = options.disableCurrentUser,\n production = options.production,\n realtime = options.realtime;\n\n if (_initialized) console.warn('Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations.');\n if (!appId) throw new TypeError('appId must be a string');\n if (!appKey) throw new TypeError('appKey must be a string');\n if (undefined !== 'NODE_JS' && masterKey) console.warn('MasterKey is not supposed to be used at client side.');\n if (isCNApp(appId)) {\n if (!serverURLs && isEmpty(AV._config.serverURLs)) {\n throw new TypeError('serverURL option is required for apps from CN region');\n }\n }\n if (appId !== AV._config.applicationId) {\n // overwrite all keys when reinitializing as a new app\n AV._config.masterKey = masterKey;\n AV._config.hookKey = hookKey;\n } else {\n if (masterKey) AV._config.masterKey = masterKey;\n if (hookKey) AV._config.hookKey = hookKey;\n }\n AV._config.applicationId = appId;\n AV._config.applicationKey = appKey;\n if (!isNullOrUndefined(production)) {\n AV.setProduction(production);\n }\n if (typeof disableCurrentUser !== 'undefined') AV._config.disableCurrentUser = disableCurrentUser;\n var disableAppRouter = _disableAppRouter || typeof serverURLs !== 'undefined';\n if (!disableAppRouter) {\n AV._appRouter = new AppRouter(AV);\n }\n AV._setServerURLs(extend({}, getDefaultServerURLs(appId), AV._config.serverURLs, typeof serverURLs === 'string' ? fillServerURLs(serverURLs) : serverURLs), disableAppRouter);\n if (realtime) {\n AV._config.realtime = realtime;\n } else if (AV._sharedConfig.liveQueryRealtime) {\n var _AV$_config$serverURL = AV._config.serverURLs,\n api = _AV$_config$serverURL.api,\n rtm = _AV$_config$serverURL.rtm;\n\n AV._config.realtime = new AV._sharedConfig.liveQueryRealtime({\n appId: appId,\n appKey: appKey,\n server: {\n api: api,\n RTMRouter: rtm\n }\n });\n }\n _initialized = true;\n};\n\n// If we're running in node.js, allow using the master key.\nif (undefined === 'NODE_JS') {\n AV.Cloud = AV.Cloud || {};\n /**\n * Switches the LeanCloud SDK to using the Master key. The Master key grants\n * priveleged access to the data in LeanCloud and can be used to bypass ACLs and\n * other restrictions that are applied to the client SDKs.\n * <p><strong><em>Available in Cloud Code and Node.js only.</em></strong>\n * </p>\n */\n AV.Cloud.useMasterKey = function () {\n AV._config.useMasterKey = true;\n };\n}\n\n/**\n * Call this method to set production environment variable.\n * @function AV.setProduction\n * @param {Boolean} production True is production environment,and\n * it's true by default.\n */\nAV.setProduction = function (production) {\n if (!isNullOrUndefined(production)) {\n AV._config.production = production ? 1 : 0;\n } else {\n // change to default value\n AV._config.production = null;\n }\n};\n\nAV._setServerURLs = function (urls) {\n var disableAppRouter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (typeof urls !== 'string') {\n extend(AV._config.serverURLs, urls);\n } else {\n AV._config.serverURLs = fillServerURLs(urls);\n }\n if (disableAppRouter) {\n if (AV._appRouter) {\n AV._appRouter.disable();\n } else {\n _disableAppRouter = true;\n }\n }\n};\n/**\n * Set server URLs for services.\n * @function AV.setServerURL\n * @since 4.3.0\n * @param {String|ServerURLs} urls URLs for services. if a string was given, it will be applied for all services.\n * You can also set them when initializing SDK with `options.serverURL`\n */\nAV.setServerURL = function (urls) {\n return AV._setServerURLs(urls);\n};\nAV.setServerURLs = AV.setServerURL;\n\nAV.keepErrorRawMessage = function (value) {\n AV._sharedConfig.keepErrorRawMessage = value;\n};\n\n/**\n * Set a deadline for requests to complete.\n * Note that file upload requests are not affected.\n * @function AV.setRequestTimeout\n * @since 3.6.0\n * @param {number} ms\n */\nAV.setRequestTimeout = function (ms) {\n AV._config.requestTimeout = ms;\n};\n\n// backword compatible\nAV.initialize = AV.init;\n\nvar defineConfig = function defineConfig(property) {\n return (0, _defineProperty2.default)(AV, property, {\n get: function get() {\n return AV._config[property];\n },\n set: function set(value) {\n AV._config[property] = value;\n }\n });\n};\n\n['applicationId', 'applicationKey', 'masterKey', 'hookKey'].forEach(defineConfig);\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(272);\nvar $Object = __webpack_require__(2).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(17);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(21), 'Object', { defineProperty: __webpack_require__(19).f });\n\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ajax = __webpack_require__(58);\nvar Cache = __webpack_require__(159);\n\nfunction AppRouter(AV) {\n var _this = this;\n\n this.AV = AV;\n this.lockedUntil = 0;\n Cache.getAsync('serverURLs').then(function (data) {\n if (_this.disabled) return;\n if (!data) return _this.lock(0);\n var serverURLs = data.serverURLs,\n lockedUntil = data.lockedUntil;\n\n _this.AV._setServerURLs(serverURLs, false);\n _this.lockedUntil = lockedUntil;\n }).catch(function () {\n return _this.lock(0);\n });\n}\n\nAppRouter.prototype.disable = function disable() {\n this.disabled = true;\n};\nAppRouter.prototype.lock = function lock(ttl) {\n this.lockedUntil = Date.now() + ttl;\n};\nAppRouter.prototype.refresh = function refresh() {\n var _this2 = this;\n\n if (this.disabled) return;\n if (Date.now() < this.lockedUntil) return;\n this.lock(10);\n var url = 'https://app-router.com/2/route';\n return ajax({\n method: 'get',\n url: url,\n query: {\n appId: this.AV.applicationId\n }\n }).then(function (servers) {\n if (_this2.disabled) return;\n var ttl = servers.ttl;\n if (!ttl) throw new Error('missing ttl');\n ttl = ttl * 1000;\n var protocal = 'https://';\n var serverURLs = {\n push: protocal + servers.push_server,\n stats: protocal + servers.stats_server,\n engine: protocal + servers.engine_server,\n api: protocal + servers.api_server\n };\n _this2.AV._setServerURLs(serverURLs, false);\n _this2.lock(ttl);\n return Cache.setAsync('serverURLs', {\n serverURLs: serverURLs,\n lockedUntil: _this2.lockedUntil\n }, ttl);\n }).catch(function (error) {\n // bypass all errors\n console.warn('refresh server URLs failed: ' + error.message);\n _this2.lock(600);\n });\n};\n\nmodule.exports = AppRouter;\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(275), __esModule: true };\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(47);\n__webpack_require__(54);\nmodule.exports = __webpack_require__(87).f('iterator');\n\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(277), __esModule: true };\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(278);\n__webpack_require__(91);\n__webpack_require__(283);\n__webpack_require__(284);\nmodule.exports = __webpack_require__(2).Symbol;\n\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(6);\nvar has = __webpack_require__(24);\nvar DESCRIPTORS = __webpack_require__(21);\nvar $export = __webpack_require__(17);\nvar redefine = __webpack_require__(94);\nvar META = __webpack_require__(279).KEY;\nvar $fails = __webpack_require__(39);\nvar shared = __webpack_require__(66);\nvar setToStringTag = __webpack_require__(52);\nvar uid = __webpack_require__(51);\nvar wks = __webpack_require__(7);\nvar wksExt = __webpack_require__(87);\nvar wksDefine = __webpack_require__(88);\nvar enumKeys = __webpack_require__(280);\nvar isArray = __webpack_require__(281);\nvar anObject = __webpack_require__(16);\nvar isObject = __webpack_require__(20);\nvar toObject = __webpack_require__(53);\nvar toIObject = __webpack_require__(25);\nvar toPrimitive = __webpack_require__(63);\nvar createDesc = __webpack_require__(49);\nvar _create = __webpack_require__(64);\nvar gOPNExt = __webpack_require__(282);\nvar $GOPD = __webpack_require__(90);\nvar $GOPS = __webpack_require__(160);\nvar $DP = __webpack_require__(19);\nvar $keys = __webpack_require__(50);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(161).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(89).f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(37)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(23)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar META = __webpack_require__(51)('meta');\nvar isObject = __webpack_require__(20);\nvar has = __webpack_require__(24);\nvar setDesc = __webpack_require__(19).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(39)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(50);\nvar gOPS = __webpack_require__(160);\nvar pIE = __webpack_require__(89);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(40);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(25);\nvar gOPN = __webpack_require__(161).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(88)('asyncIterator');\n\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(88)('observable');\n\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright (c) 2015-2017 David M. Lee, II\n\n\n/**\n * Local reference to TimeoutError\n * @private\n */\nvar TimeoutError;\n\n/**\n * Rejects a promise with a {@link TimeoutError} if it does not settle within\n * the specified timeout.\n *\n * @param {Promise} promise The promise.\n * @param {number} timeoutMillis Number of milliseconds to wait on settling.\n * @returns {Promise} Either resolves/rejects with `promise`, or rejects with\n * `TimeoutError`, whichever settles first.\n */\nvar timeout = module.exports.timeout = function(promise, timeoutMillis) {\n var error = new TimeoutError(),\n timeout;\n\n return Promise.race([\n promise,\n new Promise(function(resolve, reject) {\n timeout = setTimeout(function() {\n reject(error);\n }, timeoutMillis);\n }),\n ]).then(function(v) {\n clearTimeout(timeout);\n return v;\n }, function(err) {\n clearTimeout(timeout);\n throw err;\n });\n};\n\n/**\n * Exception indicating that the timeout expired.\n */\nTimeoutError = module.exports.TimeoutError = function() {\n Error.call(this)\n this.stack = Error().stack\n this.message = 'Timeout';\n};\n\nTimeoutError.prototype = Object.create(Error.prototype);\nTimeoutError.prototype.name = \"TimeoutError\";\n\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\n\nmodule.exports = function (AV) {\n var eventSplitter = /\\s+/;\n var slice = Array.prototype.slice;\n\n /**\n * @class\n *\n * <p>AV.Events is a fork of Backbone's Events module, provided for your\n * convenience.</p>\n *\n * <p>A module that can be mixed in to any object in order to provide\n * it with custom events. You may bind callback functions to an event\n * with `on`, or remove these functions with `off`.\n * Triggering an event fires all callbacks in the order that `on` was\n * called.\n *\n * @private\n * @example\n * var object = {};\n * _.extend(object, AV.Events);\n * object.on('expand', function(){ alert('expanded'); });\n * object.trigger('expand');</pre></p>\n *\n */\n AV.Events = {\n /**\n * Bind one or more space separated events, `events`, to a `callback`\n * function. Passing `\"all\"` will bind the callback to all events fired.\n */\n on: function on(events, callback, context) {\n var calls, event, node, tail, list;\n if (!callback) {\n return this;\n }\n events = events.split(eventSplitter);\n calls = this._callbacks || (this._callbacks = {});\n\n // Create an immutable callback list, allowing traversal during\n // modification. The tail is an empty object that will always be used\n // as the next node.\n event = events.shift();\n while (event) {\n list = calls[event];\n node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = { tail: tail, next: list ? list.next : node };\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Remove one or many callbacks. If `context` is null, removes all callbacks\n * with that function. If `callback` is null, removes all callbacks for the\n * event. If `events` is null, removes all bound callbacks for all events.\n */\n off: function off(events, callback, context) {\n var event, calls, node, tail, cb, ctx;\n\n // No events, or removing *all* events.\n if (!(calls = this._callbacks)) {\n return;\n }\n if (!(events || callback || context)) {\n delete this._callbacks;\n return this;\n }\n\n // Loop through the listed events and contexts, splicing them out of the\n // linked list of callbacks if appropriate.\n events = events ? events.split(eventSplitter) : _.keys(calls);\n event = events.shift();\n while (event) {\n node = calls[event];\n delete calls[event];\n if (!node || !(callback || context)) {\n continue;\n }\n // Create a new list, omitting the indicated callbacks.\n tail = node.tail;\n node = node.next;\n while (node !== tail) {\n cb = node.callback;\n ctx = node.context;\n if (callback && cb !== callback || context && ctx !== context) {\n this.on(event, cb, ctx);\n }\n node = node.next;\n }\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Trigger one or many events, firing all bound callbacks. Callbacks are\n * passed the same arguments as `trigger` is, apart from the event name\n * (unless you're listening on `\"all\"`, which will cause your callback to\n * receive the true name of the event as the first argument).\n */\n trigger: function trigger(events) {\n var event, node, calls, tail, args, all, rest;\n if (!(calls = this._callbacks)) {\n return this;\n }\n all = calls.all;\n events = events.split(eventSplitter);\n rest = slice.call(arguments, 1);\n\n // For each event, walk through the linked list of callbacks twice,\n // first to trigger the event, then to trigger any `\"all\"` callbacks.\n event = events.shift();\n while (event) {\n node = calls[event];\n if (node) {\n tail = node.tail;\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, rest);\n }\n }\n node = all;\n if (node) {\n tail = node.tail;\n args = [event].concat(rest);\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, args);\n }\n }\n event = events.shift();\n }\n\n return this;\n }\n };\n\n /**\n * @function\n */\n AV.Events.bind = AV.Events.on;\n\n /**\n * @function\n */\n AV.Events.unbind = AV.Events.off;\n};\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\n\n/*global navigator: false */\nmodule.exports = function (AV) {\n /**\n * Creates a new GeoPoint with any of the following forms:<br>\n * @example\n * new GeoPoint(otherGeoPoint)\n * new GeoPoint(30, 30)\n * new GeoPoint([30, 30])\n * new GeoPoint({latitude: 30, longitude: 30})\n * new GeoPoint() // defaults to (0, 0)\n * @class\n *\n * <p>Represents a latitude / longitude point that may be associated\n * with a key in a AVObject or used as a reference point for geo queries.\n * This allows proximity-based queries on the key.</p>\n *\n * <p>Only one key in a class may contain a GeoPoint.</p>\n *\n * <p>Example:<pre>\n * var point = new AV.GeoPoint(30.0, -20.0);\n * var object = new AV.Object(\"PlaceObject\");\n * object.set(\"location\", point);\n * object.save();</pre></p>\n */\n AV.GeoPoint = function (arg1, arg2) {\n if (_.isArray(arg1)) {\n AV.GeoPoint._validate(arg1[0], arg1[1]);\n this.latitude = arg1[0];\n this.longitude = arg1[1];\n } else if (_.isObject(arg1)) {\n AV.GeoPoint._validate(arg1.latitude, arg1.longitude);\n this.latitude = arg1.latitude;\n this.longitude = arg1.longitude;\n } else if (_.isNumber(arg1) && _.isNumber(arg2)) {\n AV.GeoPoint._validate(arg1, arg2);\n this.latitude = arg1;\n this.longitude = arg2;\n } else {\n this.latitude = 0;\n this.longitude = 0;\n }\n\n // Add properties so that anyone using Webkit or Mozilla will get an error\n // if they try to set values that are out of bounds.\n var self = this;\n if (this.__defineGetter__ && this.__defineSetter__) {\n // Use _latitude and _longitude to actually store the values, and add\n // getters and setters for latitude and longitude.\n this._latitude = this.latitude;\n this._longitude = this.longitude;\n this.__defineGetter__('latitude', function () {\n return self._latitude;\n });\n this.__defineGetter__('longitude', function () {\n return self._longitude;\n });\n this.__defineSetter__('latitude', function (val) {\n AV.GeoPoint._validate(val, self.longitude);\n self._latitude = val;\n });\n this.__defineSetter__('longitude', function (val) {\n AV.GeoPoint._validate(self.latitude, val);\n self._longitude = val;\n });\n }\n };\n\n /**\n * @lends AV.GeoPoint.prototype\n * @property {float} latitude North-south portion of the coordinate, in range\n * [-90, 90]. Throws an exception if set out of range in a modern browser.\n * @property {float} longitude East-west portion of the coordinate, in range\n * [-180, 180]. Throws if set out of range in a modern browser.\n */\n\n /**\n * Throws an exception if the given lat-long is out of bounds.\n * @private\n */\n AV.GeoPoint._validate = function (latitude, longitude) {\n if (latitude < -90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' < -90.0.');\n }\n if (latitude > 90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' > 90.0.');\n }\n if (longitude < -180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' < -180.0.');\n }\n if (longitude > 180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' > 180.0.');\n }\n };\n\n /**\n * Creates a GeoPoint with the user's current location, if available.\n * @return {Promise.<AV.GeoPoint>}\n */\n AV.GeoPoint.current = function () {\n return new _promise2.default(function (resolve, reject) {\n navigator.geolocation.getCurrentPosition(function (location) {\n resolve(new AV.GeoPoint({\n latitude: location.coords.latitude,\n longitude: location.coords.longitude\n }));\n }, reject);\n });\n };\n\n _.extend(AV.GeoPoint.prototype,\n /** @lends AV.GeoPoint.prototype */{\n /**\n * Returns a JSON representation of the GeoPoint, suitable for AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n AV.GeoPoint._validate(this.latitude, this.longitude);\n return {\n __type: 'GeoPoint',\n latitude: this.latitude,\n longitude: this.longitude\n };\n },\n\n /**\n * Returns the distance from this GeoPoint to another in radians.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n radiansTo: function radiansTo(point) {\n var d2r = Math.PI / 180.0;\n var lat1rad = this.latitude * d2r;\n var long1rad = this.longitude * d2r;\n var lat2rad = point.latitude * d2r;\n var long2rad = point.longitude * d2r;\n var deltaLat = lat1rad - lat2rad;\n var deltaLong = long1rad - long2rad;\n var sinDeltaLatDiv2 = Math.sin(deltaLat / 2);\n var sinDeltaLongDiv2 = Math.sin(deltaLong / 2);\n // Square of half the straight line chord distance between both points.\n var a = sinDeltaLatDiv2 * sinDeltaLatDiv2 + Math.cos(lat1rad) * Math.cos(lat2rad) * sinDeltaLongDiv2 * sinDeltaLongDiv2;\n a = Math.min(1.0, a);\n return 2 * Math.asin(Math.sqrt(a));\n },\n\n /**\n * Returns the distance from this GeoPoint to another in kilometers.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n kilometersTo: function kilometersTo(point) {\n return this.radiansTo(point) * 6371.0;\n },\n\n /**\n * Returns the distance from this GeoPoint to another in miles.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n milesTo: function milesTo(point) {\n return this.radiansTo(point) * 3958.8;\n }\n });\n};\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\n\nmodule.exports = function (AV) {\n var PUBLIC_KEY = '*';\n\n /**\n * Creates a new ACL.\n * If no argument is given, the ACL has no permissions for anyone.\n * If the argument is a AV.User, the ACL will have read and write\n * permission for only that user.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized ACL created with toJSON().\n * @see AV.Object#setACL\n * @class\n *\n * <p>An ACL, or Access Control List can be added to any\n * <code>AV.Object</code> to restrict access to only a subset of users\n * of your application.</p>\n */\n AV.ACL = function (arg1) {\n var self = this;\n self.permissionsById = {};\n if (_.isObject(arg1)) {\n if (arg1 instanceof AV.User) {\n self.setReadAccess(arg1, true);\n self.setWriteAccess(arg1, true);\n } else {\n if (_.isFunction(arg1)) {\n throw new Error('AV.ACL() called with a function. Did you forget ()?');\n }\n AV._objectEach(arg1, function (accessList, userId) {\n if (!_.isString(userId)) {\n throw new Error('Tried to create an ACL with an invalid userId.');\n }\n self.permissionsById[userId] = {};\n AV._objectEach(accessList, function (allowed, permission) {\n if (permission !== 'read' && permission !== 'write') {\n throw new Error('Tried to create an ACL with an invalid permission type.');\n }\n if (!_.isBoolean(allowed)) {\n throw new Error('Tried to create an ACL with an invalid permission value.');\n }\n self.permissionsById[userId][permission] = allowed;\n });\n });\n }\n }\n };\n\n /**\n * Returns a JSON-encoded version of the ACL.\n * @return {Object}\n */\n AV.ACL.prototype.toJSON = function () {\n return _.clone(this.permissionsById);\n };\n\n AV.ACL.prototype._setAccess = function (accessType, userId, allowed) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n if (!_.isString(userId)) {\n throw new Error('userId must be a string.');\n }\n if (!_.isBoolean(allowed)) {\n throw new Error('allowed must be either true or false.');\n }\n var permissions = this.permissionsById[userId];\n if (!permissions) {\n if (!allowed) {\n // The user already doesn't have this permission, so no action needed.\n return;\n } else {\n permissions = {};\n this.permissionsById[userId] = permissions;\n }\n }\n\n if (allowed) {\n this.permissionsById[userId][accessType] = true;\n } else {\n delete permissions[accessType];\n if (_.isEmpty(permissions)) {\n delete this.permissionsById[userId];\n }\n }\n };\n\n AV.ACL.prototype._getAccess = function (accessType, userId) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n var permissions = this.permissionsById[userId];\n if (!permissions) {\n return false;\n }\n return permissions[accessType] ? true : false;\n };\n\n /**\n * Set whether the given user is allowed to read this object.\n * @param userId An instance of AV.User or its objectId.\n * @param {Boolean} allowed Whether that user should have read access.\n */\n AV.ACL.prototype.setReadAccess = function (userId, allowed) {\n this._setAccess('read', userId, allowed);\n };\n\n /**\n * Get whether the given user id is *explicitly* allowed to read this object.\n * Even if this returns false, the user may still be able to access it if\n * getPublicReadAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n AV.ACL.prototype.getReadAccess = function (userId) {\n return this._getAccess('read', userId);\n };\n\n /**\n * Set whether the given user id is allowed to write this object.\n * @param userId An instance of AV.User or its objectId, or a AV.Role..\n * @param {Boolean} allowed Whether that user should have write access.\n */\n AV.ACL.prototype.setWriteAccess = function (userId, allowed) {\n this._setAccess('write', userId, allowed);\n };\n\n /**\n * Get whether the given user id is *explicitly* allowed to write this object.\n * Even if this returns false, the user may still be able to write it if\n * getPublicWriteAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n AV.ACL.prototype.getWriteAccess = function (userId) {\n return this._getAccess('write', userId);\n };\n\n /**\n * Set whether the public is allowed to read this object.\n * @param {Boolean} allowed\n */\n AV.ACL.prototype.setPublicReadAccess = function (allowed) {\n this.setReadAccess(PUBLIC_KEY, allowed);\n };\n\n /**\n * Get whether the public is allowed to read this object.\n * @return {Boolean}\n */\n AV.ACL.prototype.getPublicReadAccess = function () {\n return this.getReadAccess(PUBLIC_KEY);\n };\n\n /**\n * Set whether the public is allowed to write this object.\n * @param {Boolean} allowed\n */\n AV.ACL.prototype.setPublicWriteAccess = function (allowed) {\n this.setWriteAccess(PUBLIC_KEY, allowed);\n };\n\n /**\n * Get whether the public is allowed to write this object.\n * @return {Boolean}\n */\n AV.ACL.prototype.getPublicWriteAccess = function () {\n return this.getWriteAccess(PUBLIC_KEY);\n };\n\n /**\n * Get whether users belonging to the given role are allowed\n * to read this object. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has read access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.getRoleReadAccess = function (role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n return this.getReadAccess('role:' + role);\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Get whether users belonging to the given role are allowed\n * to write this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.getRoleWriteAccess = function (role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n return this.getWriteAccess('role:' + role);\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Set whether users belonging to the given role are allowed\n * to read this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can read this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.setRoleReadAccess = function (role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n this.setReadAccess('role:' + role, allowed);\n return;\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Set whether users belonging to the given role are allowed\n * to write this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.setRoleWriteAccess = function (role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n this.setWriteAccess('role:' + role, allowed);\n return;\n }\n throw new Error('role must be a AV.Role or a String');\n };\n};\n\n/***/ }),\n/* 289 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\n\nmodule.exports = function (AV) {\n /**\n * @private\n * @class\n * A AV.Op is an atomic operation that can be applied to a field in a\n * AV.Object. For example, calling <code>object.set(\"foo\", \"bar\")</code>\n * is an example of a AV.Op.Set. Calling <code>object.unset(\"foo\")</code>\n * is a AV.Op.Unset. These operations are stored in a AV.Object and\n * sent to the server as part of <code>object.save()</code> operations.\n * Instances of AV.Op should be immutable.\n *\n * You should not create subclasses of AV.Op or instantiate AV.Op\n * directly.\n */\n AV.Op = function () {\n this._initialize.apply(this, arguments);\n };\n\n _.extend(AV.Op.prototype,\n /** @lends AV.Op.prototype */{\n _initialize: function _initialize() {}\n });\n\n _.extend(AV.Op, {\n /**\n * To create a new Op, call AV.Op._extend();\n * @private\n */\n _extend: AV._extend,\n\n // A map of __op string to decoder function.\n _opDecoderMap: {},\n\n /**\n * Registers a function to convert a json object with an __op field into an\n * instance of a subclass of AV.Op.\n * @private\n */\n _registerDecoder: function _registerDecoder(opName, decoder) {\n AV.Op._opDecoderMap[opName] = decoder;\n },\n\n /**\n * Converts a json object into an instance of a subclass of AV.Op.\n * @private\n */\n _decode: function _decode(json) {\n var decoder = AV.Op._opDecoderMap[json.__op];\n if (decoder) {\n return decoder(json);\n } else {\n return undefined;\n }\n }\n });\n\n /*\n * Add a handler for Batch ops.\n */\n AV.Op._registerDecoder('Batch', function (json) {\n var op = null;\n AV._arrayEach(json.ops, function (nextOp) {\n nextOp = AV.Op._decode(nextOp);\n op = nextOp._mergeWithPrevious(op);\n });\n return op;\n });\n\n /**\n * @private\n * @class\n * A Set operation indicates that either the field was changed using\n * AV.Object.set, or it is a mutable container that was detected as being\n * changed.\n */\n AV.Op.Set = AV.Op._extend(\n /** @lends AV.Op.Set.prototype */{\n _initialize: function _initialize(value) {\n this._value = value;\n },\n\n /**\n * Returns the new value of this field after the set.\n */\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return AV._encode(this.value());\n },\n\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n return this;\n },\n\n _estimate: function _estimate(oldValue) {\n return this.value();\n }\n });\n\n /**\n * A sentinel value that is returned by AV.Op.Unset._estimate to\n * indicate the field should be deleted. Basically, if you find _UNSET as a\n * value in your object, you should remove that key.\n */\n AV.Op._UNSET = {};\n\n /**\n * @private\n * @class\n * An Unset operation indicates that this field has been deleted from the\n * object.\n */\n AV.Op.Unset = AV.Op._extend(\n /** @lends AV.Op.Unset.prototype */{\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'Delete' };\n },\n\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n return this;\n },\n\n _estimate: function _estimate(oldValue) {\n return AV.Op._UNSET;\n }\n });\n\n AV.Op._registerDecoder('Delete', function (json) {\n return new AV.Op.Unset();\n });\n\n /**\n * @private\n * @class\n * An Increment is an atomic operation where the numeric value for the field\n * will be increased by a given amount.\n */\n AV.Op.Increment = AV.Op._extend(\n /** @lends AV.Op.Increment.prototype */{\n _initialize: function _initialize(amount) {\n this._amount = amount;\n },\n\n /**\n * Returns the amount to increment by.\n * @return {Number} the amount to increment by.\n */\n amount: function amount() {\n return this._amount;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'Increment', amount: this._amount };\n },\n\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.amount());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() + this.amount());\n } else if (previous instanceof AV.Op.Increment) {\n return new AV.Op.Increment(this.amount() + previous.amount());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return this.amount();\n }\n return oldValue + this.amount();\n }\n });\n\n AV.Op._registerDecoder('Increment', function (json) {\n return new AV.Op.Increment(json.amount);\n });\n\n /**\n * @private\n * @class\n * BitAnd is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitAnd = AV.Op._extend(\n /** @lends AV.Op.BitAnd.prototype */{\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'BitAnd', value: this.value() };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(0);\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() & this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue & this.value();\n }\n });\n\n AV.Op._registerDecoder('BitAnd', function (json) {\n return new AV.Op.BitAnd(json.value);\n });\n\n /**\n * @private\n * @class\n * BitOr is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitOr = AV.Op._extend(\n /** @lends AV.Op.BitOr.prototype */{\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'BitOr', value: this.value() };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() | this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue | this.value();\n }\n });\n\n AV.Op._registerDecoder('BitOr', function (json) {\n return new AV.Op.BitOr(json.value);\n });\n\n /**\n * @private\n * @class\n * BitXor is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitXor = AV.Op._extend(\n /** @lends AV.Op.BitXor.prototype */{\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'BitXor', value: this.value() };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() ^ this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue ^ this.value();\n }\n });\n\n AV.Op._registerDecoder('BitXor', function (json) {\n return new AV.Op.BitXor(json.value);\n });\n\n /**\n * @private\n * @class\n * Add is an atomic operation where the given objects will be appended to the\n * array that is stored in this field.\n */\n AV.Op.Add = AV.Op._extend(\n /** @lends AV.Op.Add.prototype */{\n _initialize: function _initialize(objects) {\n this._objects = objects;\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'Add', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Add) {\n return new AV.Op.Add(previous.objects().concat(this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n return oldValue.concat(this.objects());\n }\n }\n });\n\n AV.Op._registerDecoder('Add', function (json) {\n return new AV.Op.Add(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * AddUnique is an atomic operation where the given items will be appended to\n * the array that is stored in this field only if they were not already\n * present in the array.\n */\n AV.Op.AddUnique = AV.Op._extend(\n /** @lends AV.Op.AddUnique.prototype */{\n _initialize: function _initialize(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'AddUnique', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.AddUnique) {\n return new AV.Op.AddUnique(this._estimate(previous.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n // We can't just take the _.uniq(_.union(...)) of oldValue and\n // this.objects, because the uniqueness may not apply to oldValue\n // (especially if the oldValue was set via .set())\n var newValue = _.clone(oldValue);\n AV._arrayEach(this.objects(), function (obj) {\n if (obj instanceof AV.Object && obj.id) {\n var matchingObj = _.find(newValue, function (anObj) {\n return anObj instanceof AV.Object && anObj.id === obj.id;\n });\n if (!matchingObj) {\n newValue.push(obj);\n } else {\n var index = _.indexOf(newValue, matchingObj);\n newValue[index] = obj;\n }\n } else if (!_.contains(newValue, obj)) {\n newValue.push(obj);\n }\n });\n return newValue;\n }\n }\n });\n\n AV.Op._registerDecoder('AddUnique', function (json) {\n return new AV.Op.AddUnique(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * Remove is an atomic operation where the given objects will be removed from\n * the array that is stored in this field.\n */\n AV.Op.Remove = AV.Op._extend(\n /** @lends AV.Op.Remove.prototype */{\n _initialize: function _initialize(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be removed from the array.\n * @return {Array} The objects to be removed from the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __op: 'Remove', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return previous;\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Remove) {\n return new AV.Op.Remove(_.union(previous.objects(), this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return [];\n } else {\n var newValue = _.difference(oldValue, this.objects());\n // If there are saved AV Objects being removed, also remove them.\n AV._arrayEach(this.objects(), function (obj) {\n if (obj instanceof AV.Object && obj.id) {\n newValue = _.reject(newValue, function (other) {\n return other instanceof AV.Object && other.id === obj.id;\n });\n }\n });\n return newValue;\n }\n }\n });\n\n AV.Op._registerDecoder('Remove', function (json) {\n return new AV.Op.Remove(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * A Relation operation indicates that the field is an instance of\n * AV.Relation, and objects are being added to, or removed from, that\n * relation.\n */\n AV.Op.Relation = AV.Op._extend(\n /** @lends AV.Op.Relation.prototype */{\n _initialize: function _initialize(adds, removes) {\n this._targetClassName = null;\n\n var self = this;\n\n var pointerToId = function pointerToId(object) {\n if (object instanceof AV.Object) {\n if (!object.id) {\n throw new Error(\"You can't add an unsaved AV.Object to a relation.\");\n }\n if (!self._targetClassName) {\n self._targetClassName = object.className;\n }\n if (self._targetClassName !== object.className) {\n throw new Error('Tried to create a AV.Relation with 2 different types: ' + self._targetClassName + ' and ' + object.className + '.');\n }\n return object.id;\n }\n return object;\n };\n\n this.relationsToAdd = _.uniq(_.map(adds, pointerToId));\n this.relationsToRemove = _.uniq(_.map(removes, pointerToId));\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being added to the\n * relation.\n * @return {Array}\n */\n added: function added() {\n var self = this;\n return _.map(this.relationsToAdd, function (objectId) {\n var object = AV.Object._create(self._targetClassName);\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being removed from\n * the relation.\n * @return {Array}\n */\n removed: function removed() {\n var self = this;\n return _.map(this.relationsToRemove, function (objectId) {\n var object = AV.Object._create(self._targetClassName);\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n var adds = null;\n var removes = null;\n var self = this;\n var idToPointer = function idToPointer(id) {\n return {\n __type: 'Pointer',\n className: self._targetClassName,\n objectId: id\n };\n };\n var pointers = null;\n if (this.relationsToAdd.length > 0) {\n pointers = _.map(this.relationsToAdd, idToPointer);\n adds = { __op: 'AddRelation', objects: pointers };\n }\n\n if (this.relationsToRemove.length > 0) {\n pointers = _.map(this.relationsToRemove, idToPointer);\n removes = { __op: 'RemoveRelation', objects: pointers };\n }\n\n if (adds && removes) {\n return { __op: 'Batch', ops: [adds, removes] };\n }\n\n return adds || removes || {};\n },\n\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n throw new Error(\"You can't modify a relation after deleting it.\");\n } else if (previous instanceof AV.Op.Relation) {\n if (previous._targetClassName && previous._targetClassName !== this._targetClassName) {\n throw new Error('Related object must be of class ' + previous._targetClassName + ', but ' + this._targetClassName + ' was passed in.');\n }\n var newAdd = _.union(_.difference(previous.relationsToAdd, this.relationsToRemove), this.relationsToAdd);\n var newRemove = _.union(_.difference(previous.relationsToRemove, this.relationsToAdd), this.relationsToRemove);\n\n var newRelation = new AV.Op.Relation(newAdd, newRemove);\n newRelation._targetClassName = this._targetClassName;\n return newRelation;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function _estimate(oldValue, object, key) {\n if (!oldValue) {\n var relation = new AV.Relation(object, key);\n relation.targetClassName = this._targetClassName;\n } else if (oldValue instanceof AV.Relation) {\n if (this._targetClassName) {\n if (oldValue.targetClassName) {\n if (oldValue.targetClassName !== this._targetClassName) {\n throw new Error('Related object must be a ' + oldValue.targetClassName + ', but a ' + this._targetClassName + ' was passed in.');\n }\n } else {\n oldValue.targetClassName = this._targetClassName;\n }\n }\n return oldValue;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n }\n });\n\n AV.Op._registerDecoder('AddRelation', function (json) {\n return new AV.Op.Relation(AV._decode(json.objects), []);\n });\n AV.Op._registerDecoder('RemoveRelation', function (json) {\n return new AV.Op.Relation([], AV._decode(json.objects));\n });\n};\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\n\nmodule.exports = function (AV) {\n /**\n * Creates a new Relation for the given parent object and key. This\n * constructor should rarely be used directly, but rather created by\n * {@link AV.Object#relation}.\n * @param {AV.Object} parent The parent of this relation.\n * @param {String} key The key for this relation on the parent.\n * @see AV.Object#relation\n * @class\n *\n * <p>\n * A class that is used to access all of the children of a many-to-many\n * relationship. Each instance of AV.Relation is associated with a\n * particular parent object and key.\n * </p>\n */\n AV.Relation = function (parent, key) {\n if (!_.isString(key)) {\n throw new TypeError('key must be a string');\n }\n this.parent = parent;\n this.key = key;\n this.targetClassName = null;\n };\n\n /**\n * Creates a query that can be used to query the parent objects in this relation.\n * @param {String} parentClass The parent class or name.\n * @param {String} relationKey The relation field key in parent.\n * @param {AV.Object} child The child object.\n * @return {AV.Query}\n */\n AV.Relation.reverseQuery = function (parentClass, relationKey, child) {\n var query = new AV.Query(parentClass);\n query.equalTo(relationKey, child._toPointer());\n return query;\n };\n\n _.extend(AV.Relation.prototype,\n /** @lends AV.Relation.prototype */{\n /**\n * Makes sure that this relation has the right parent and key.\n * @private\n */\n _ensureParentAndKey: function _ensureParentAndKey(parent, key) {\n this.parent = this.parent || parent;\n this.key = this.key || key;\n if (this.parent !== parent) {\n throw new Error('Internal Error. Relation retrieved from two different Objects.');\n }\n if (this.key !== key) {\n throw new Error('Internal Error. Relation retrieved from two different keys.');\n }\n },\n\n /**\n * Adds a AV.Object or an array of AV.Objects to the relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to add.\n */\n add: function add(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation(objects, []);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Removes a AV.Object or an array of AV.Objects from this relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to remove.\n */\n remove: function remove(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation([], objects);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return { __type: 'Relation', className: this.targetClassName };\n },\n\n /**\n * Returns a AV.Query that is limited to objects in this\n * relation.\n * @return {AV.Query}\n */\n query: function query() {\n var targetClass;\n var query;\n if (!this.targetClassName) {\n targetClass = AV.Object._getSubclass(this.parent.className);\n query = new AV.Query(targetClass);\n query._defaultParams.redirectClassNameForKey = this.key;\n } else {\n targetClass = AV.Object._getSubclass(this.targetClassName);\n query = new AV.Query(targetClass);\n }\n query._addCondition('$relatedTo', 'object', this.parent._toPointer());\n query._addCondition('$relatedTo', 'key', this.key);\n\n return query;\n }\n });\n};\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar cos = __webpack_require__(292);\nvar qiniu = __webpack_require__(293);\nvar s3 = __webpack_require__(308);\nvar AVError = __webpack_require__(29);\nvar AVRequest = __webpack_require__(12)._request;\n\nvar _require = __webpack_require__(15),\n tap = _require.tap,\n transformFetchOptions = _require.transformFetchOptions;\n\nvar debug = __webpack_require__(35)('leancloud:file');\nvar parseBase64 = __webpack_require__(312);\n\nmodule.exports = function (AV) {\n // port from browserify path module\n // since react-native packager won't shim node modules.\n var extname = function extname(path) {\n if (!_.isString(path)) return '';\n return path.match(/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/)[4];\n };\n\n var b64Digit = function b64Digit(number) {\n if (number < 26) {\n return String.fromCharCode(65 + number);\n }\n if (number < 52) {\n return String.fromCharCode(97 + (number - 26));\n }\n if (number < 62) {\n return String.fromCharCode(48 + (number - 52));\n }\n if (number === 62) {\n return '+';\n }\n if (number === 63) {\n return '/';\n }\n throw new Error('Tried to encode large digit ' + number + ' in base64.');\n };\n\n var encodeBase64 = function encodeBase64(array) {\n var chunks = [];\n chunks.length = Math.ceil(array.length / 3);\n _.times(chunks.length, function (i) {\n var b1 = array[i * 3];\n var b2 = array[i * 3 + 1] || 0;\n var b3 = array[i * 3 + 2] || 0;\n\n var has2 = i * 3 + 1 < array.length;\n var has3 = i * 3 + 2 < array.length;\n\n chunks[i] = [b64Digit(b1 >> 2 & 0x3f), b64Digit(b1 << 4 & 0x30 | b2 >> 4 & 0x0f), has2 ? b64Digit(b2 << 2 & 0x3c | b3 >> 6 & 0x03) : '=', has3 ? b64Digit(b3 & 0x3f) : '='].join('');\n });\n return chunks.join('');\n };\n\n /**\n * An AV.File is a local representation of a file that is saved to the AV\n * cloud.\n * @param name {String} The file's name. This will change to a unique value\n * once the file has finished saving.\n * @param data {Array} The data for the file, as either:\n * 1. an Array of byte value Numbers, or\n * 2. an Object like { base64: \"...\" } with a base64-encoded String.\n * 3. a Blob(File) selected with a file upload control in a browser.\n * 4. an Object like { blob: {uri: \"...\"} } that mimics Blob\n * in some non-browser environments such as React Native.\n * 5. a Buffer in Node.js runtime.\n * 6. a Stream in Node.js runtime.\n *\n * For example:<pre>\n * var fileUploadControl = $(\"#profilePhotoFileUpload\")[0];\n * if (fileUploadControl.files.length > 0) {\n * var file = fileUploadControl.files[0];\n * var name = \"photo.jpg\";\n * var file = new AV.File(name, file);\n * file.save().then(function() {\n * // The file has been saved to AV.\n * }, function(error) {\n * // The file either could not be read, or could not be saved to AV.\n * });\n * }</pre>\n *\n * @class\n * @param [mimeType] {String} Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n */\n AV.File = function (name, data, mimeType) {\n this.attributes = {\n name: name,\n url: '',\n metaData: {},\n // 用来存储转换后要上传的 base64 String\n base64: ''\n };\n\n if (_.isString(data)) {\n throw new TypeError('Creating an AV.File from a String is not yet supported.');\n }\n if (_.isArray(data)) {\n this.attributes.metaData.size = data.length;\n data = { base64: encodeBase64(data) };\n }\n\n this._extName = '';\n this._data = data;\n this._uploadHeaders = {};\n\n if (data && data.blob && typeof data.blob.uri === 'string') {\n this._extName = extname(data.blob.uri);\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n if (data.size) {\n this.attributes.metaData.size = data.size;\n }\n if (data.name) {\n this._extName = extname(data.name);\n }\n }\n\n var owner = void 0;\n if (data && data.owner) {\n owner = data.owner;\n } else if (!AV._config.disableCurrentUser) {\n try {\n owner = AV.User.current();\n } catch (error) {\n if ('SYNC_API_NOT_AVAILABLE' !== error.code) {\n throw error;\n }\n }\n }\n\n this.attributes.metaData.owner = owner ? owner.id : 'unknown';\n\n this.set('mime_type', mimeType);\n };\n\n /**\n * Creates a fresh AV.File object with exists url for saving to AVOS Cloud.\n * @param {String} name the file name\n * @param {String} url the file url.\n * @param {Object} [metaData] the file metadata object.\n * @param {String} [type] Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n * @return {AV.File} the file object\n */\n AV.File.withURL = function (name, url, metaData, type) {\n if (!name || !url) {\n throw new Error('Please provide file name and url');\n }\n var file = new AV.File(name, null, type);\n //copy metaData properties to file.\n if (metaData) {\n for (var prop in metaData) {\n if (!file.attributes.metaData[prop]) file.attributes.metaData[prop] = metaData[prop];\n }\n }\n file.attributes.url = url;\n //Mark the file is from external source.\n file.attributes.metaData.__source = 'external';\n file.attributes.metaData.size = 0;\n return file;\n };\n\n /**\n * Creates a file object with exists objectId.\n * @param {String} objectId The objectId string\n * @return {AV.File} the file object\n */\n AV.File.createWithoutData = function (objectId) {\n if (!objectId) {\n throw new TypeError('The objectId must be provided');\n }\n var file = new AV.File();\n file.id = objectId;\n return file;\n };\n\n _.extend(AV.File.prototype,\n /** @lends AV.File.prototype */{\n className: '_File',\n\n _toFullJSON: function _toFullJSON(seenObjects) {\n var _this = this;\n\n var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var json = _.clone(this.attributes);\n AV._objectEach(json, function (val, key) {\n json[key] = AV._encode(val, seenObjects, undefined, full);\n });\n AV._objectEach(this._operations, function (val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (_.has(_this, key)) {\n var val = _this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n if (full) {\n json.__type = 'File';\n }\n return json;\n },\n\n\n /**\n * Returns a JSON version of the file with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON: function toFullJSON() {\n var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return this._toFullJSON(seenObjects);\n },\n\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function toJSON(key, holder) {\n var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [this];\n\n return this._toFullJSON(seenObjects, false);\n },\n\n\n /**\n * Gets a Pointer referencing this file.\n * @private\n */\n _toPointer: function _toPointer() {\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id\n };\n },\n\n\n /**\n * Returns the ACL for this file.\n * @returns {AV.ACL} An instance of AV.ACL.\n */\n getACL: function getACL() {\n return this._acl;\n },\n\n\n /**\n * Sets the ACL to be used for this file.\n * @param {AV.ACL} acl An instance of AV.ACL.\n */\n setACL: function setACL(acl) {\n if (!(acl instanceof AV.ACL)) {\n return new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n this._acl = acl;\n return this;\n },\n\n\n /**\n * Gets the name of the file. Before save is called, this is the filename\n * given by the user. After save is called, that name gets prefixed with a\n * unique identifier.\n */\n name: function name() {\n return this.get('name');\n },\n\n\n /**\n * Gets the url of the file. It is only available after you save the file or\n * after you get the file from a AV.Object.\n * @return {String}\n */\n url: function url() {\n return this.get('url');\n },\n\n\n /**\n * Gets the attributs of the file object.\n * @param {String} The attribute name which want to get.\n * @returns {Any}\n */\n get: function get(attrName) {\n switch (attrName) {\n case 'objectId':\n return this.id;\n case 'url':\n case 'name':\n case 'mime_type':\n case 'metaData':\n case 'createdAt':\n case 'updatedAt':\n return this.attributes[attrName];\n default:\n return this.attributes.metaData[attrName];\n }\n },\n\n\n /**\n * Set the metaData of the file object.\n * @param {Object} Object is an key value Object for setting metaData.\n * @param {String} attr is an optional metadata key.\n * @param {Object} value is an optional metadata value.\n * @returns {String|Number|Array|Object}\n */\n set: function set() {\n var _this2 = this;\n\n var set = function set(attrName, value) {\n switch (attrName) {\n case 'name':\n case 'url':\n case 'mime_type':\n case 'base64':\n case 'metaData':\n _this2.attributes[attrName] = value;\n break;\n default:\n // File 并非一个 AVObject,不能完全自定义其他属性,所以只能都放在 metaData 上面\n _this2.attributes.metaData[attrName] = value;\n break;\n }\n };\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n switch (args.length) {\n case 1:\n // 传入一个 Object\n for (var k in args[0]) {\n set(k, args[0][k]);\n }\n break;\n case 2:\n set(args[0], args[1]);\n break;\n }\n return this;\n },\n\n\n /**\n * Set a header for the upload request.\n * For more infomation, go to https://url.leanapp.cn/avfile-upload-headers\n *\n * @param {String} key header key\n * @param {String} value header value\n * @return {AV.File} this\n */\n setUploadHeader: function setUploadHeader(key, value) {\n this._uploadHeaders[key] = value;\n return this;\n },\n\n\n /**\n * <p>Returns the file's metadata JSON object if no arguments is given.Returns the\n * metadata value if a key is given.Set metadata value if key and value are both given.</p>\n * <p><pre>\n * var metadata = file.metaData(); //Get metadata JSON object.\n * var size = file.metaData('size'); // Get the size metadata value.\n * file.metaData('format', 'jpeg'); //set metadata attribute and value.\n *</pre></p>\n * @return {Object} The file's metadata JSON object.\n * @param {String} attr an optional metadata key.\n * @param {Object} value an optional metadata value.\n **/\n metaData: function metaData(attr, value) {\n if (attr && value) {\n this.attributes.metaData[attr] = value;\n return this;\n } else if (attr && !value) {\n return this.attributes.metaData[attr];\n } else {\n return this.attributes.metaData;\n }\n },\n\n\n /**\n * 如果文件是图片,获取图片的缩略图URL。可以传入宽度、高度、质量、格式等参数。\n * @return {String} 缩略图URL\n * @param {Number} width 宽度,单位:像素\n * @param {Number} heigth 高度,单位:像素\n * @param {Number} quality 质量,1-100的数字,默认100\n * @param {Number} scaleToFit 是否将图片自适应大小。默认为true。\n * @param {String} fmt 格式,默认为png,也可以为jpeg,gif等格式。\n */\n\n thumbnailURL: function thumbnailURL(width, height) {\n var quality = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n var scaleToFit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var fmt = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'png';\n\n var url = this.attributes.url;\n if (!url) {\n throw new Error('Invalid url.');\n }\n if (!width || !height || width <= 0 || height <= 0) {\n throw new Error('Invalid width or height value.');\n }\n if (quality <= 0 || quality > 100) {\n throw new Error('Invalid quality value.');\n }\n var mode = scaleToFit ? 2 : 1;\n return url + '?imageView/' + mode + '/w/' + width + '/h/' + height + '/q/' + quality + '/format/' + fmt;\n },\n\n\n /**\n * Returns the file's size.\n * @return {Number} The file's size in bytes.\n **/\n size: function size() {\n return this.metaData().size;\n },\n\n\n /**\n * Returns the file's owner.\n * @return {String} The file's owner id.\n */\n ownerId: function ownerId() {\n return this.metaData().owner;\n },\n\n\n /**\n * Destroy the file.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n if (!this.id) {\n return _promise2.default.reject(new Error('The file id does not eixst.'));\n }\n var request = AVRequest('files', null, this.id, 'DELETE', null, options);\n return request;\n },\n\n\n /**\n * Request Qiniu upload token\n * @param {string} type\n * @return {Promise} Resolved with the response\n * @private\n */\n _fileToken: function _fileToken(type, authOptions) {\n var name = this.attributes.name;\n\n var extName = extname(name);\n if (!extName && this._extName) {\n name += this._extName;\n extName = this._extName;\n }\n var data = {\n name: name,\n keep_file_name: authOptions.keepFileName,\n key: authOptions.key,\n ACL: this._acl,\n mime_type: type,\n metaData: this.attributes.metaData\n };\n return AVRequest('fileTokens', null, null, 'POST', data, authOptions);\n },\n\n\n /**\n * @callback UploadProgressCallback\n * @param {XMLHttpRequestProgressEvent} event - The progress event with 'loaded' and 'total' attributes\n */\n /**\n * Saves the file to the AV cloud.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {UploadProgressCallback} [options.onprogress] 文件上传进度,在 Node.js 中无效,回调参数说明详见 {@link UploadProgressCallback}。\n * @param {boolean} [options.keepFileName = false] 保留下载文件的文件名。\n * @param {string} [options.key] 指定文件的 key。设置该选项需要使用 masterKey\n * @return {Promise} Promise that is resolved when the save finishes.\n */\n save: function save() {\n var _this3 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this.id) {\n throw new Error('File is already saved.');\n }\n if (!this._previousSave) {\n if (this._data) {\n var mimeType = this.get('mime_type');\n this._previousSave = this._fileToken(mimeType, options).then(function (uploadInfo) {\n if (uploadInfo.mime_type) {\n mimeType = uploadInfo.mime_type;\n _this3.set('mime_type', mimeType);\n }\n _this3._token = uploadInfo.token;\n return _promise2.default.resolve().then(function () {\n var data = _this3._data;\n if (data && data.base64) {\n return parseBase64(data.base64, mimeType);\n }\n if (data && data.blob) {\n if (!data.blob.type && mimeType) {\n data.blob.type = mimeType;\n }\n if (!data.blob.name) {\n data.blob.name = _this3.get('name');\n }\n return data.blob;\n }\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return data;\n }\n throw new TypeError('malformed file data');\n }).then(function (data) {\n var _options = _.extend({}, options);\n // filter out download progress events\n if (options.onprogress) {\n _options.onprogress = function (event) {\n if (event.direction === 'download') return;\n return options.onprogress(event);\n };\n }\n switch (uploadInfo.provider) {\n case 's3':\n return s3(uploadInfo, data, _this3, _options);\n case 'qcloud':\n return cos(uploadInfo, data, _this3, _options);\n case 'qiniu':\n default:\n return qiniu(uploadInfo, data, _this3, _options);\n }\n }).then(tap(function () {\n return _this3._callback(true);\n }), function (error) {\n _this3._callback(false);\n throw error;\n });\n });\n } else if (this.attributes.url && this.attributes.metaData.__source === 'external') {\n // external link file.\n var data = {\n name: this.attributes.name,\n ACL: this._acl,\n metaData: this.attributes.metaData,\n mime_type: this.mimeType,\n url: this.attributes.url\n };\n this._previousSave = AVRequest('files', null, null, 'post', data, options).then(function (response) {\n _this3.id = response.objectId;\n return _this3;\n });\n }\n }\n return this._previousSave;\n },\n _callback: function _callback(success) {\n AVRequest('fileCallback', null, null, 'post', {\n token: this._token,\n result: success\n }).catch(debug);\n delete this._token;\n delete this._data;\n },\n\n\n /**\n * fetch the file from server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function fetch(fetchOptions, options) {\n if (!this.id) {\n throw new Error('Cannot fetch unsaved file');\n }\n var request = AVRequest('files', null, this.id, 'GET', transformFetchOptions(fetchOptions), options);\n return request.then(this._finishFetch.bind(this));\n },\n _finishFetch: function _finishFetch(response) {\n var value = AV.Object.prototype.parse(response);\n value.attributes = {\n name: value.name,\n url: value.url,\n mime_type: value.mime_type,\n bucket: value.bucket\n };\n value.attributes.metaData = value.metaData || {};\n value.id = value.objectId;\n // clean\n delete value.objectId;\n delete value.metaData;\n delete value.url;\n delete value.name;\n delete value.mime_type;\n delete value.bucket;\n _.extend(this, value);\n return this;\n }\n });\n};\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _require = __webpack_require__(36),\n getAdapter = _require.getAdapter;\n\nvar debug = __webpack_require__(35)('cos');\n\nmodule.exports = function (uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var url = uploadInfo.upload_url + '?sign=' + encodeURIComponent(uploadInfo.token);\n var fileFormData = {\n field: 'fileContent',\n data: data,\n name: file.attributes.name\n };\n var options = {\n headers: file._uploadHeaders,\n data: {\n op: 'upload'\n },\n onprogress: saveOptions.onprogress\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n var upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(function (response) {\n debug(response.status, response.data);\n if (response.ok === false) {\n var error = new Error(response.status);\n error.response = response;\n throw error;\n }\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n }, function (error) {\n var response = error.response;\n\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n throw error;\n });\n};\n\n/***/ }),\n/* 293 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _getPrototypeOf = __webpack_require__(155);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = __webpack_require__(294);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(295);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(303);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(304);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _getIterator2 = __webpack_require__(162);\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _require = __webpack_require__(36),\n getAdapter = _require.getAdapter;\n\nvar debug = __webpack_require__(35)('leancloud:qiniu');\nvar ajax = __webpack_require__(58);\nvar btoa = __webpack_require__(307);\n\nvar SHARD_THRESHOLD = 1024 * 1024 * 64;\n\nvar CHUNK_SIZE = 1024 * 1024 * 16;\n\nfunction upload(uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n // Get the uptoken to upload files to qiniu.\n var uptoken = uploadInfo.token;\n var url = uploadInfo.upload_url || 'https://upload.qiniup.com';\n var fileFormData = {\n field: 'file',\n data: data,\n name: file.attributes.name\n };\n var options = {\n headers: file._uploadHeaders,\n data: {\n name: file.attributes.name,\n key: uploadInfo.key,\n token: uptoken\n },\n onprogress: saveOptions.onprogress\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n var upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(function (response) {\n debug(response.status, response.data);\n if (response.ok === false) {\n var message = response.status;\n if (response.data) {\n if (response.data.error) {\n message = response.data.error;\n } else {\n message = (0, _stringify2.default)(response.data);\n }\n }\n var error = new Error(message);\n error.response = response;\n throw error;\n }\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n }, function (error) {\n var response = error.response;\n\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n throw error;\n });\n}\n\nfunction urlSafeBase64(string) {\n var base64 = btoa(unescape(encodeURIComponent(string)));\n var result = '';\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(base64), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ch = _step.value;\n\n switch (ch) {\n case '+':\n result += '-';\n break;\n case '/':\n result += '_';\n break;\n default:\n result += ch;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return result;\n}\n\nvar ShardUploader = function () {\n function ShardUploader(uploadInfo, data, file, saveOptions) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, ShardUploader);\n\n this.uploadInfo = uploadInfo;\n this.data = data;\n this.file = file;\n this.size = undefined;\n this.offset = 0;\n this.uploadedChunks = 0;\n\n var key = urlSafeBase64(uploadInfo.key);\n var uploadURL = uploadInfo.upload_url || 'https://upload.qiniup.com';\n this.baseURL = uploadURL + '/buckets/' + uploadInfo.bucket + '/objects/' + key + '/uploads';\n this.upToken = 'UpToken ' + uploadInfo.token;\n\n this.uploaded = 0;\n if (saveOptions && saveOptions.onprogress) {\n this.onProgress = function (_ref) {\n var loaded = _ref.loaded;\n\n loaded += _this.uploadedChunks * CHUNK_SIZE;\n if (loaded <= _this.uploaded) {\n return;\n }\n if (_this.size) {\n saveOptions.onprogress({\n loaded: loaded,\n total: _this.size,\n percent: loaded / _this.size * 100\n });\n } else {\n saveOptions.onprogress({ loaded: loaded });\n }\n _this.uploaded = loaded;\n };\n }\n }\n\n /**\n * @returns {Promise<string>}\n */\n\n\n (0, _createClass3.default)(ShardUploader, [{\n key: 'getUploadId',\n value: function getUploadId() {\n return ajax({\n method: 'POST',\n url: this.baseURL,\n headers: {\n Authorization: this.upToken\n }\n }).then(function (res) {\n return res.uploadId;\n });\n }\n }, {\n key: 'getChunk',\n value: function getChunk() {\n throw new Error('Not implemented');\n }\n\n /**\n * @param {string} uploadId\n * @param {number} partNumber\n * @param {any} data\n * @returns {Promise<{ partNumber: number, etag: string }>}\n */\n\n }, {\n key: 'uploadPart',\n value: function uploadPart(uploadId, partNumber, data) {\n return ajax({\n method: 'PUT',\n url: this.baseURL + '/' + uploadId + '/' + partNumber,\n headers: {\n Authorization: this.upToken\n },\n data: data,\n onprogress: this.onProgress\n }).then(function (_ref2) {\n var etag = _ref2.etag;\n return { partNumber: partNumber, etag: etag };\n });\n }\n }, {\n key: 'stopUpload',\n value: function stopUpload(uploadId) {\n return ajax({\n method: 'DELETE',\n url: this.baseURL + '/' + uploadId,\n headers: {\n Authorization: this.upToken\n }\n });\n }\n }, {\n key: 'upload',\n value: function upload() {\n var _this2 = this;\n\n var parts = [];\n return this.getUploadId().then(function (uploadId) {\n var uploadPart = function uploadPart() {\n return _promise2.default.resolve(_this2.getChunk()).then(function (chunk) {\n if (!chunk) {\n return;\n }\n var partNumber = parts.length + 1;\n return _this2.uploadPart(uploadId, partNumber, chunk).then(function (part) {\n parts.push(part);\n _this2.uploadedChunks++;\n return uploadPart();\n });\n }).catch(function (error) {\n return _this2.stopUpload(uploadId).then(function () {\n return _promise2.default.reject(error);\n });\n });\n };\n\n return uploadPart().then(function () {\n return ajax({\n method: 'POST',\n url: _this2.baseURL + '/' + uploadId,\n headers: {\n Authorization: _this2.upToken\n },\n data: {\n parts: parts,\n fname: _this2.file.attributes.name,\n mimeType: _this2.file.attributes.mime_type\n }\n });\n });\n }).then(function () {\n _this2.file.attributes.url = _this2.uploadInfo.url;\n _this2.file._bucket = _this2.uploadInfo.bucket;\n _this2.file.id = _this2.uploadInfo.objectId;\n return _this2.file;\n });\n }\n }]);\n return ShardUploader;\n}();\n\nvar BlobUploader = function (_ShardUploader) {\n (0, _inherits3.default)(BlobUploader, _ShardUploader);\n\n function BlobUploader(uploadInfo, data, file, saveOptions) {\n (0, _classCallCheck3.default)(this, BlobUploader);\n\n var _this3 = (0, _possibleConstructorReturn3.default)(this, (BlobUploader.__proto__ || (0, _getPrototypeOf2.default)(BlobUploader)).call(this, uploadInfo, data, file, saveOptions));\n\n _this3.size = data.size;\n return _this3;\n }\n\n /**\n * @returns {Blob | null}\n */\n\n\n (0, _createClass3.default)(BlobUploader, [{\n key: 'getChunk',\n value: function getChunk() {\n if (this.offset >= this.size) {\n return null;\n }\n var chunk = this.data.slice(this.offset, this.offset + CHUNK_SIZE);\n this.offset += chunk.size;\n return chunk;\n }\n }]);\n return BlobUploader;\n}(ShardUploader);\n\nfunction isBlob(data) {\n return typeof Blob !== 'undefined' && data instanceof Blob;\n}\n\nmodule.exports = function (uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (isBlob(data) && data.size >= SHARD_THRESHOLD) {\n return new BlobUploader(uploadInfo, data, file, saveOptions).upload();\n }\n return upload(uploadInfo, data, file, saveOptions);\n};\n\n/***/ }),\n/* 294 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(59);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/***/ }),\n/* 295 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(296);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(300);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(59);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n/***/ }),\n/* 296 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(297), __esModule: true };\n\n/***/ }),\n/* 297 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(298);\nmodule.exports = __webpack_require__(2).Object.setPrototypeOf;\n\n\n/***/ }),\n/* 298 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(17);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(299).set });\n\n\n/***/ }),\n/* 299 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(20);\nvar anObject = __webpack_require__(16);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(38)(Function.call, __webpack_require__(90).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n/***/ }),\n/* 300 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(301), __esModule: true };\n\n/***/ }),\n/* 301 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(302);\nvar $Object = __webpack_require__(2).Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n\n\n/***/ }),\n/* 302 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(17);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(64) });\n\n\n/***/ }),\n/* 303 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n/***/ }),\n/* 304 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(86);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n/***/ }),\n/* 305 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(54);\n__webpack_require__(47);\nmodule.exports = __webpack_require__(306);\n\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(16);\nvar get = __webpack_require__(99);\nmodule.exports = __webpack_require__(2).getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n/***/ }),\n/* 307 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// base64 character set, plus padding character (=)\nvar b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nmodule.exports = function (string) {\n var result = '';\n\n for (var i = 0; i < string.length;) {\n var a = string.charCodeAt(i++);\n var b = string.charCodeAt(i++);\n var c = string.charCodeAt(i++);\n if (a > 255 || b > 255 || c > 255) {\n throw new TypeError('Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.');\n }\n\n var bitmap = a << 16 | b << 8 | c;\n result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) + b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);\n }\n\n // To determine the final padding\n var rest = string.length % 3;\n // If there's need of padding, replace the last 'A's with equal signs\n return rest ? result.slice(0, rest - 3) + '==='.substring(rest) : result;\n};\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\nvar ajax = __webpack_require__(58);\n\nmodule.exports = function upload(uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\n return ajax({\n url: uploadInfo.upload_url,\n method: 'PUT',\n data: data,\n headers: _.extend({\n 'Content-Type': file.get('mime_type'),\n 'Cache-Control': 'public, max-age=31536000'\n }, file._uploadHeaders),\n onprogress: saveOptions.onprogress\n }).then(function () {\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n });\n};\n\n/***/ }),\n/* 309 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function(){\r\n var crypt = __webpack_require__(310),\r\n utf8 = __webpack_require__(163).utf8,\r\n isBuffer = __webpack_require__(311),\r\n bin = __webpack_require__(163).bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n\n\n/***/ }),\n/* 310 */\n/***/ (function(module, exports) {\n\n(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports) {\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n/***/ }),\n/* 312 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar dataURItoBlob = function dataURItoBlob(dataURI, type) {\n var byteString;\n\n // 传入的 base64,不是 dataURL\n if (dataURI.indexOf('base64') < 0) {\n byteString = atob(dataURI);\n } else if (dataURI.split(',')[0].indexOf('base64') >= 0) {\n type = type || dataURI.split(',')[0].split(':')[1].split(';')[0];\n byteString = atob(dataURI.split(',')[1]);\n } else {\n byteString = unescape(dataURI.split(',')[1]);\n }\n var ia = new Uint8Array(byteString.length);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ia], { type: type });\n};\n\nmodule.exports = dataURItoBlob;\n\n/***/ }),\n/* 313 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _getOwnPropertyDescriptor = __webpack_require__(314);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _slicedToArray2 = __webpack_require__(317);\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar AVError = __webpack_require__(29);\n\nvar _require = __webpack_require__(12),\n _request = _require._request;\n\nvar _require2 = __webpack_require__(15),\n isNullOrUndefined = _require2.isNullOrUndefined,\n ensureArray = _require2.ensureArray,\n transformFetchOptions = _require2.transformFetchOptions,\n setValue = _require2.setValue,\n findValue = _require2.findValue,\n isPlainObject = _require2.isPlainObject,\n continueWhile = _require2.continueWhile;\n\nvar recursiveToPointer = function recursiveToPointer(value) {\n if (_.isArray(value)) return value.map(recursiveToPointer);\n if (isPlainObject(value)) return _.mapObject(value, recursiveToPointer);\n if (_.isObject(value) && value._toPointer) return value._toPointer();\n return value;\n};\n\nvar RESERVED_KEYS = ['objectId', 'createdAt', 'updatedAt'];\nvar checkReservedKey = function checkReservedKey(key) {\n if (RESERVED_KEYS.indexOf(key) !== -1) {\n throw new Error('key[' + key + '] is reserved');\n }\n};\n\nvar handleBatchResults = function handleBatchResults(results) {\n var firstError = _.find(results, function (result) {\n return result instanceof Error;\n });\n if (!firstError) {\n return results;\n }\n var error = new AVError(firstError.code, firstError.message);\n error.results = results;\n throw error;\n};\n\n// Helper function to get a value from a Backbone object as a property\n// or as a function.\nfunction getValue(object, prop) {\n if (!(object && object[prop])) {\n return null;\n }\n return _.isFunction(object[prop]) ? object[prop]() : object[prop];\n}\n\n// AV.Object is analogous to the Java AVObject.\n// It also implements the same interface as a Backbone model.\n\nmodule.exports = function (AV) {\n /**\n * Creates a new model with defined attributes. A client id (cid) is\n * automatically generated and assigned for you.\n *\n * <p>You won't normally call this method directly. It is recommended that\n * you use a subclass of <code>AV.Object</code> instead, created by calling\n * <code>extend</code>.</p>\n *\n * <p>However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:<pre>\n * var object = new AV.Object(\"ClassName\");\n * </pre>\n * That is basically equivalent to:<pre>\n * var MyClass = AV.Object.extend(\"ClassName\");\n * var object = new MyClass();\n * </pre></p>\n *\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @see AV.Object.extend\n *\n * @class\n *\n * <p>The fundamental unit of AV data, which implements the Backbone Model\n * interface.</p>\n */\n AV.Object = function (attributes, options) {\n // Allow new AV.Object(\"ClassName\") as a shortcut to _create.\n if (_.isString(attributes)) {\n return AV.Object._create.apply(this, arguments);\n }\n\n attributes = attributes || {};\n if (options && options.parse) {\n attributes = this.parse(attributes);\n attributes = this._mergeMagicFields(attributes);\n }\n var defaults = getValue(this, 'defaults');\n if (defaults) {\n attributes = _.extend({}, defaults, attributes);\n }\n if (options && options.collection) {\n this.collection = options.collection;\n }\n\n this._serverData = {}; // The last known data for this object from cloud.\n this._opSetQueue = [{}]; // List of sets of changes to the data.\n this._flags = {};\n this.attributes = {}; // The best estimate of this's current data.\n\n this._hashedJSON = {}; // Hash of values of containers at last save.\n this._escapedAttributes = {};\n this.cid = _.uniqueId('c');\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this.set(attributes, { silent: true });\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this._hasData = true;\n this._previousAttributes = _.clone(this.attributes);\n this.initialize.apply(this, arguments);\n };\n\n /**\n * @lends AV.Object.prototype\n * @property {String} id The objectId of the AV Object.\n */\n\n /**\n * Saves the given list of AV.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * @example\n * AV.Object.saveAll([object1, object2, ...]).then(function(list) {\n * // All the objects were saved.\n * }, function(error) {\n * // An error occurred while saving one of the objects.\n * });\n *\n * @param {Array} list A list of <code>AV.Object</code>.\n */\n AV.Object.saveAll = function (list, options) {\n return AV.Object._deepSaveAsync(list, null, options);\n };\n\n /**\n * Fetch the given list of AV.Object.\n *\n * @param {AV.Object[]} objects A list of <code>AV.Object</code>\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object[]>} The given list of <code>AV.Object</code>, updated\n */\n\n AV.Object.fetchAll = function (objects, options) {\n return _promise2.default.resolve().then(function () {\n return _request('batch', null, null, 'POST', {\n requests: _.map(objects, function (object) {\n if (!object.className) throw new Error('object must have className to fetch');\n if (!object.id) throw new Error('object must have id to fetch');\n if (object.dirty()) throw new Error('object is modified but not saved');\n return {\n method: 'GET',\n path: '/1.1/classes/' + object.className + '/' + object.id\n };\n })\n }, options);\n }).then(function (response) {\n var results = _.map(objects, function (object, i) {\n if (response[i].success) {\n var fetchedAttrs = object.parse(response[i].success);\n object._cleanupUnsetKeys(fetchedAttrs);\n object._finishFetch(fetchedAttrs);\n return object;\n }\n if (response[i].success === null) {\n return new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n }\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n };\n\n // Attach all inheritable methods to the AV.Object prototype.\n _.extend(AV.Object.prototype, AV.Events,\n /** @lends AV.Object.prototype */{\n _fetchWhenSave: false,\n\n /**\n * Initialize is an empty function by default. Override it with your own\n * initialization logic.\n */\n initialize: function initialize() {},\n\n /**\n * Set whether to enable fetchWhenSave option when updating object.\n * When set true, SDK would fetch the latest object after saving.\n * Default is false.\n *\n * @deprecated use AV.Object#save with options.fetchWhenSave instead\n * @param {boolean} enable true to enable fetchWhenSave option.\n */\n fetchWhenSave: function fetchWhenSave(enable) {\n console.warn('AV.Object#fetchWhenSave is deprecated, use AV.Object#save with options.fetchWhenSave instead.');\n if (!_.isBoolean(enable)) {\n throw new Error('Expect boolean value for fetchWhenSave');\n }\n this._fetchWhenSave = enable;\n },\n\n /**\n * Returns the object's objectId.\n * @return {String} the objectId.\n */\n getObjectId: function getObjectId() {\n return this.id;\n },\n\n /**\n * Returns the object's createdAt attribute.\n * @return {Date}\n */\n getCreatedAt: function getCreatedAt() {\n return this.createdAt;\n },\n\n /**\n * Returns the object's updatedAt attribute.\n * @return {Date}\n */\n getUpdatedAt: function getUpdatedAt() {\n return this.updatedAt;\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function toJSON(key, holder) {\n var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Returns a JSON version of the object with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON: function toFullJSON() {\n var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return this._toFullJSON(seenObjects);\n },\n\n\n _toFullJSON: function _toFullJSON(seenObjects) {\n var _this = this;\n\n var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var json = _.clone(this.attributes);\n if (_.isArray(seenObjects)) {\n var newSeenObjects = seenObjects.concat(this);\n }\n AV._objectEach(json, function (val, key) {\n json[key] = AV._encode(val, newSeenObjects, undefined, full);\n });\n AV._objectEach(this._operations, function (val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (_.has(_this, key)) {\n var val = _this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n if (full) {\n json.__type = 'Object';\n if (_.isArray(seenObjects) && seenObjects.length) json.__type = 'Pointer';\n json.className = this.className;\n }\n return json;\n },\n\n /**\n * Updates _hashedJSON to reflect the current state of this object.\n * Adds any changed hash values to the set of pending changes.\n * @private\n */\n _refreshCache: function _refreshCache() {\n var self = this;\n if (self._refreshingCache) {\n return;\n }\n self._refreshingCache = true;\n AV._objectEach(this.attributes, function (value, key) {\n if (value instanceof AV.Object) {\n value._refreshCache();\n } else if (_.isObject(value)) {\n if (self._resetCacheForKey(key)) {\n self.set(key, new AV.Op.Set(value), { silent: true });\n }\n }\n });\n delete self._refreshingCache;\n },\n\n /**\n * Returns true if this object has been modified since its last\n * save/refresh. If an attribute is specified, it returns true only if that\n * particular attribute has been modified since the last save/refresh.\n * @param {String} attr An attribute name (optional).\n * @return {Boolean}\n */\n dirty: function dirty(attr) {\n this._refreshCache();\n\n var currentChanges = _.last(this._opSetQueue);\n\n if (attr) {\n return currentChanges[attr] ? true : false;\n }\n if (!this.id) {\n return true;\n }\n if (_.keys(currentChanges).length > 0) {\n return true;\n }\n return false;\n },\n\n /**\n * Returns the keys of the modified attribute since its last save/refresh.\n * @return {String[]}\n */\n dirtyKeys: function dirtyKeys() {\n this._refreshCache();\n var currentChanges = _.last(this._opSetQueue);\n return _.keys(currentChanges);\n },\n\n /**\n * Gets a Pointer referencing this Object.\n * @private\n */\n _toPointer: function _toPointer() {\n // if (!this.id) {\n // throw new Error(\"Can't serialize an unsaved AV.Object\");\n // }\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id\n };\n },\n\n /**\n * Gets the value of an attribute.\n * @param {String} attr The string name of an attribute.\n */\n get: function get(attr) {\n switch (attr) {\n case 'objectId':\n return this.id;\n case 'createdAt':\n case 'updatedAt':\n return this[attr];\n default:\n return this.attributes[attr];\n }\n },\n\n /**\n * Gets a relation on the given class for the attribute.\n * @param {String} attr The attribute to get the relation for.\n * @return {AV.Relation}\n */\n relation: function relation(attr) {\n var value = this.get(attr);\n if (value) {\n if (!(value instanceof AV.Relation)) {\n throw new Error('Called relation() on non-relation field ' + attr);\n }\n value._ensureParentAndKey(this, attr);\n return value;\n } else {\n return new AV.Relation(this, attr);\n }\n },\n\n /**\n * Gets the HTML-escaped value of an attribute.\n */\n escape: function escape(attr) {\n var html = this._escapedAttributes[attr];\n if (html) {\n return html;\n }\n var val = this.attributes[attr];\n var escaped;\n if (isNullOrUndefined(val)) {\n escaped = '';\n } else {\n escaped = _.escape(val.toString());\n }\n this._escapedAttributes[attr] = escaped;\n return escaped;\n },\n\n /**\n * Returns <code>true</code> if the attribute contains a value that is not\n * null or undefined.\n * @param {String} attr The string name of the attribute.\n * @return {Boolean}\n */\n has: function has(attr) {\n return !isNullOrUndefined(this.attributes[attr]);\n },\n\n /**\n * Pulls \"special\" fields like objectId, createdAt, etc. out of attrs\n * and puts them on \"this\" directly. Removes them from attrs.\n * @param attrs - A dictionary with the data for this AV.Object.\n * @private\n */\n _mergeMagicFields: function _mergeMagicFields(attrs) {\n // Check for changes of magic fields.\n var model = this;\n var specialFields = ['objectId', 'createdAt', 'updatedAt'];\n AV._arrayEach(specialFields, function (attr) {\n if (attrs[attr]) {\n if (attr === 'objectId') {\n model.id = attrs[attr];\n } else if ((attr === 'createdAt' || attr === 'updatedAt') && !_.isDate(attrs[attr])) {\n model[attr] = AV._parseDate(attrs[attr]);\n } else {\n model[attr] = attrs[attr];\n }\n delete attrs[attr];\n }\n });\n return attrs;\n },\n\n /**\n * Returns the json to be sent to the server.\n * @private\n */\n _startSave: function _startSave() {\n this._opSetQueue.push({});\n },\n\n /**\n * Called when a save fails because of an error. Any changes that were part\n * of the save need to be merged with changes made after the save. This\n * might throw an exception is you do conflicting operations. For example,\n * if you do:\n * object.set(\"foo\", \"bar\");\n * object.set(\"invalid field name\", \"baz\");\n * object.save();\n * object.increment(\"foo\");\n * then this will throw when the save fails and the client tries to merge\n * \"bar\" with the +1.\n * @private\n */\n _cancelSave: function _cancelSave() {\n var failedChanges = _.first(this._opSetQueue);\n this._opSetQueue = _.rest(this._opSetQueue);\n var nextChanges = _.first(this._opSetQueue);\n AV._objectEach(failedChanges, function (op, key) {\n var op1 = failedChanges[key];\n var op2 = nextChanges[key];\n if (op1 && op2) {\n nextChanges[key] = op2._mergeWithPrevious(op1);\n } else if (op1) {\n nextChanges[key] = op1;\n }\n });\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a save completes successfully. This merges the changes that\n * were saved into the known server data, and overrides it with any data\n * sent directly from the server.\n * @private\n */\n _finishSave: function _finishSave(serverData) {\n // Grab a copy of any object referenced by this object. These instances\n // may have already been fetched, and we don't want to lose their data.\n // Note that doing it like this means we will unify separate copies of the\n // same object, but that's a risk we have to take.\n var fetchedObjects = {};\n AV._traverse(this.attributes, function (object) {\n if (object instanceof AV.Object && object.id && object._hasData) {\n fetchedObjects[object.id] = object;\n }\n });\n\n var savedChanges = _.first(this._opSetQueue);\n this._opSetQueue = _.rest(this._opSetQueue);\n this._applyOpSet(savedChanges, this._serverData);\n this._mergeMagicFields(serverData);\n var self = this;\n AV._objectEach(serverData, function (value, key) {\n self._serverData[key] = AV._decode(value, key);\n\n // Look for any objects that might have become unfetched and fix them\n // by replacing their values with the previously observed values.\n var fetched = AV._traverse(self._serverData[key], function (object) {\n if (object instanceof AV.Object && fetchedObjects[object.id]) {\n return fetchedObjects[object.id];\n }\n });\n if (fetched) {\n self._serverData[key] = fetched;\n }\n });\n this._rebuildAllEstimatedData();\n var opSetQueue = this._opSetQueue.map(_.clone);\n this._refreshCache();\n this._opSetQueue = opSetQueue;\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a fetch or login is complete to set the known server data to\n * the given object.\n * @private\n */\n _finishFetch: function _finishFetch(serverData, hasData) {\n // Clear out any changes the user might have made previously.\n this._opSetQueue = [{}];\n\n // Bring in all the new server data.\n this._mergeMagicFields(serverData);\n var self = this;\n AV._objectEach(serverData, function (value, key) {\n self._serverData[key] = AV._decode(value, key);\n });\n\n // Refresh the attributes.\n this._rebuildAllEstimatedData();\n\n // Clear out the cache of mutable containers.\n this._refreshCache();\n this._opSetQueue = [{}];\n\n this._hasData = hasData;\n },\n\n /**\n * Applies the set of AV.Op in opSet to the object target.\n * @private\n */\n _applyOpSet: function _applyOpSet(opSet, target) {\n var self = this;\n AV._objectEach(opSet, function (change, key) {\n var _findValue = findValue(target, key),\n _findValue2 = (0, _slicedToArray3.default)(_findValue, 3),\n value = _findValue2[0],\n actualTarget = _findValue2[1],\n actualKey = _findValue2[2];\n\n setValue(target, key, change._estimate(value, self, key));\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n });\n },\n\n /**\n * Replaces the cached value for key with the current value.\n * Returns true if the new value is different than the old value.\n * @private\n */\n _resetCacheForKey: function _resetCacheForKey(key) {\n var value = this.attributes[key];\n if (_.isObject(value) && !(value instanceof AV.Object) && !(value instanceof AV.File)) {\n var json = (0, _stringify2.default)(recursiveToPointer(value));\n if (this._hashedJSON[key] !== json) {\n var wasSet = !!this._hashedJSON[key];\n this._hashedJSON[key] = json;\n return wasSet;\n }\n }\n return false;\n },\n\n /**\n * Populates attributes[key] by starting with the last known data from the\n * server, and applying all of the local changes that have been made to that\n * key since then.\n * @private\n */\n _rebuildEstimatedDataForKey: function _rebuildEstimatedDataForKey(key) {\n var self = this;\n delete this.attributes[key];\n if (this._serverData[key]) {\n this.attributes[key] = this._serverData[key];\n }\n AV._arrayEach(this._opSetQueue, function (opSet) {\n var op = opSet[key];\n if (op) {\n var _findValue3 = findValue(self.attributes, key),\n _findValue4 = (0, _slicedToArray3.default)(_findValue3, 4),\n value = _findValue4[0],\n actualTarget = _findValue4[1],\n actualKey = _findValue4[2],\n firstKey = _findValue4[3];\n\n setValue(self.attributes, key, op._estimate(value, self, key));\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n self._resetCacheForKey(firstKey);\n }\n });\n },\n\n /**\n * Populates attributes by starting with the last known data from the\n * server, and applying all of the local changes that have been made since\n * then.\n * @private\n */\n _rebuildAllEstimatedData: function _rebuildAllEstimatedData() {\n var self = this;\n\n var previousAttributes = _.clone(this.attributes);\n\n this.attributes = _.clone(this._serverData);\n AV._arrayEach(this._opSetQueue, function (opSet) {\n self._applyOpSet(opSet, self.attributes);\n AV._objectEach(opSet, function (op, key) {\n self._resetCacheForKey(key);\n });\n });\n\n // Trigger change events for anything that changed because of the fetch.\n AV._objectEach(previousAttributes, function (oldValue, key) {\n if (self.attributes[key] !== oldValue) {\n self.trigger('change:' + key, self, self.attributes[key], {});\n }\n });\n AV._objectEach(this.attributes, function (newValue, key) {\n if (!_.has(previousAttributes, key)) {\n self.trigger('change:' + key, self, newValue, {});\n }\n });\n },\n\n /**\n * Sets a hash of model attributes on the object, firing\n * <code>\"change\"</code> unless you choose to silence it.\n *\n * <p>You can call it with an object containing keys and values, or with one\n * key and value. For example:</p>\n *\n * @example\n * gameTurn.set({\n * player: player1,\n * diceRoll: 2\n * });\n *\n * game.set(\"currentPlayer\", player2);\n *\n * game.set(\"finished\", true);\n *\n * @param {String} key The key to set.\n * @param {Any} value The value to give it.\n * @param {Object} [options]\n * @param {Boolean} [options.silent]\n * @return {AV.Object} self if succeeded, throws if the value is not valid.\n * @see AV.Object#validate\n */\n set: function set(key, value, options) {\n var attrs;\n if (_.isObject(key) || isNullOrUndefined(key)) {\n attrs = _.mapObject(key, function (v, k) {\n checkReservedKey(k);\n return AV._decode(v, k);\n });\n options = value;\n } else {\n attrs = {};\n checkReservedKey(key);\n attrs[key] = AV._decode(value, key);\n }\n\n // Extract attributes and options.\n options = options || {};\n if (!attrs) {\n return this;\n }\n if (attrs instanceof AV.Object) {\n attrs = attrs.attributes;\n }\n\n // If the unset option is used, every attribute should be a Unset.\n if (options.unset) {\n AV._objectEach(attrs, function (unused_value, key) {\n attrs[key] = new AV.Op.Unset();\n });\n }\n\n // Apply all the attributes to get the estimated values.\n var dataToValidate = _.clone(attrs);\n var self = this;\n AV._objectEach(dataToValidate, function (value, key) {\n if (value instanceof AV.Op) {\n dataToValidate[key] = value._estimate(self.attributes[key], self, key);\n if (dataToValidate[key] === AV.Op._UNSET) {\n delete dataToValidate[key];\n }\n }\n });\n\n // Run validation.\n this._validate(attrs, options);\n\n options.changes = {};\n var escaped = this._escapedAttributes;\n\n // Update attributes.\n AV._arrayEach(_.keys(attrs), function (attr) {\n var val = attrs[attr];\n\n // If this is a relation object we need to set the parent correctly,\n // since the location where it was parsed does not have access to\n // this object.\n if (val instanceof AV.Relation) {\n val.parent = self;\n }\n\n if (!(val instanceof AV.Op)) {\n val = new AV.Op.Set(val);\n }\n\n // See if this change will actually have any effect.\n var isRealChange = true;\n if (val instanceof AV.Op.Set && _.isEqual(self.attributes[attr], val.value)) {\n isRealChange = false;\n }\n\n if (isRealChange) {\n delete escaped[attr];\n if (options.silent) {\n self._silent[attr] = true;\n } else {\n options.changes[attr] = true;\n }\n }\n\n var currentChanges = _.last(self._opSetQueue);\n currentChanges[attr] = val._mergeWithPrevious(currentChanges[attr]);\n self._rebuildEstimatedDataForKey(attr);\n\n if (isRealChange) {\n self.changed[attr] = self.attributes[attr];\n if (!options.silent) {\n self._pending[attr] = true;\n }\n } else {\n delete self.changed[attr];\n delete self._pending[attr];\n }\n });\n\n if (!options.silent) {\n this.change(options);\n }\n return this;\n },\n\n /**\n * Remove an attribute from the model, firing <code>\"change\"</code> unless\n * you choose to silence it. This is a noop if the attribute doesn't\n * exist.\n * @param key {String} The key.\n */\n unset: function unset(attr, options) {\n options = options || {};\n options.unset = true;\n return this.set(attr, null, options);\n },\n\n /**\n * Atomically increments the value of the given attribute the next time the\n * object is saved. If no amount is specified, 1 is used by default.\n *\n * @param key {String} The key.\n * @param amount {Number} The amount to increment by.\n */\n increment: function increment(attr, amount) {\n if (_.isUndefined(amount) || _.isNull(amount)) {\n amount = 1;\n }\n return this.set(attr, new AV.Op.Increment(amount));\n },\n\n /**\n * Atomically add an object to the end of the array associated with a given\n * key.\n * @param key {String} The key.\n * @param item {} The item to add.\n */\n add: function add(attr, item) {\n return this.set(attr, new AV.Op.Add(ensureArray(item)));\n },\n\n /**\n * Atomically add an object to the array associated with a given key, only\n * if it is not already present in the array. The position of the insert is\n * not guaranteed.\n *\n * @param key {String} The key.\n * @param item {} The object to add.\n */\n addUnique: function addUnique(attr, item) {\n return this.set(attr, new AV.Op.AddUnique(ensureArray(item)));\n },\n\n /**\n * Atomically remove all instances of an object from the array associated\n * with a given key.\n *\n * @param key {String} The key.\n * @param item {} The object to remove.\n */\n remove: function remove(attr, item) {\n return this.set(attr, new AV.Op.Remove(ensureArray(item)));\n },\n\n /**\n * Atomically apply a \"bit and\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitAnd: function bitAnd(attr, value) {\n return this.set(attr, new AV.Op.BitAnd(value));\n },\n\n\n /**\n * Atomically apply a \"bit or\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitOr: function bitOr(attr, value) {\n return this.set(attr, new AV.Op.BitOr(value));\n },\n\n\n /**\n * Atomically apply a \"bit xor\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitXor: function bitXor(attr, value) {\n return this.set(attr, new AV.Op.BitXor(value));\n },\n\n\n /**\n * Returns an instance of a subclass of AV.Op describing what kind of\n * modification has been performed on this field since the last time it was\n * saved. For example, after calling object.increment(\"x\"), calling\n * object.op(\"x\") would return an instance of AV.Op.Increment.\n *\n * @param key {String} The key.\n * @returns {AV.Op} The operation, or undefined if none.\n */\n op: function op(attr) {\n return _.last(this._opSetQueue)[attr];\n },\n\n /**\n * Clear all attributes on the model, firing <code>\"change\"</code> unless\n * you choose to silence it.\n */\n clear: function clear(options) {\n options = options || {};\n options.unset = true;\n var keysToClear = _.extend(this.attributes, this._operations);\n return this.set(keysToClear, options);\n },\n\n /**\n * Clears any (or specific) changes to the model made since the last save.\n * @param {string|string[]} [keys] specify keys to revert.\n */\n revert: function revert(keys) {\n var lastOp = _.last(this._opSetQueue);\n var _keys = ensureArray(keys || _.keys(lastOp));\n _keys.forEach(function (key) {\n delete lastOp[key];\n });\n this._rebuildAllEstimatedData();\n return this;\n },\n\n\n /**\n * Returns a JSON-encoded set of operations to be sent with the next save\n * request.\n * @private\n */\n _getSaveJSON: function _getSaveJSON() {\n var json = _.clone(_.first(this._opSetQueue));\n AV._objectEach(json, function (op, key) {\n json[key] = op.toJSON();\n });\n return json;\n },\n\n /**\n * Returns true if this object can be serialized for saving.\n * @private\n */\n _canBeSerialized: function _canBeSerialized() {\n return AV.Object._canBeSerializedAsValue(this.attributes);\n },\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * triggering a <code>\"change\"</code> event.\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function fetch() {\n var fetchOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments[1];\n\n if (!this.id) {\n throw new Error('Cannot fetch unsaved object');\n }\n var self = this;\n var request = _request('classes', this.className, this.id, 'GET', transformFetchOptions(fetchOptions), options);\n return request.then(function (response) {\n var fetchedAttrs = self.parse(response);\n self._cleanupUnsetKeys(fetchedAttrs, fetchOptions.keys ? ensureArray(fetchOptions.keys).join(',').split(',') : undefined);\n self._finishFetch(fetchedAttrs, true);\n return self;\n });\n },\n\n _cleanupUnsetKeys: function _cleanupUnsetKeys(fetchedAttrs) {\n var _this2 = this;\n\n var fetchedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _.keys(this._serverData);\n\n _.forEach(fetchedKeys, function (key) {\n if (fetchedAttrs[key] === undefined) delete _this2._serverData[key];\n });\n },\n\n\n /**\n * Set a hash of model attributes, and save the model to the server.\n * updatedAt will be updated when the request returns.\n * You can either call it as:<pre>\n * object.save();</pre>\n * or<pre>\n * object.save(null, options);</pre>\n * or<pre>\n * object.save(attrs, options);</pre>\n * or<pre>\n * object.save(key, value, options);</pre>\n *\n * @example\n * gameTurn.save({\n * player: \"Jake Cutter\",\n * diceRoll: 2\n * }).then(function(gameTurnAgain) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of AVError.\n * });\n *\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} options.fetchWhenSave fetch and update object after save succeeded\n * @param {AV.Query} options.query Save object only when it matches the query\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n * @see AVError\n */\n save: function save(arg1, arg2, arg3) {\n var attrs, current, options;\n if (_.isObject(arg1) || isNullOrUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n\n options = _.clone(options) || {};\n if (options.wait) {\n current = _.clone(this.attributes);\n }\n\n var setOptions = _.clone(options) || {};\n if (setOptions.wait) {\n setOptions.silent = true;\n }\n if (attrs) {\n this.set(attrs, setOptions);\n }\n\n var model = this;\n\n var unsavedChildren = [];\n var unsavedFiles = [];\n AV.Object._findUnsavedChildren(model, unsavedChildren, unsavedFiles);\n if (unsavedChildren.length + unsavedFiles.length > 1) {\n return AV.Object._deepSaveAsync(this, model, options);\n }\n\n this._startSave();\n this._saving = (this._saving || 0) + 1;\n\n this._allPreviousSaves = this._allPreviousSaves || _promise2.default.resolve();\n this._allPreviousSaves = this._allPreviousSaves.catch(function (e) {}).then(function () {\n var method = model.id ? 'PUT' : 'POST';\n\n var json = model._getSaveJSON();\n var query = {};\n\n if (model._fetchWhenSave || options.fetchWhenSave) {\n query['new'] = 'true';\n }\n // user login option\n if (options._failOnNotExist) {\n query.failOnNotExist = 'true';\n }\n\n if (options.query) {\n var queryParams;\n if (typeof options.query._getParams === 'function') {\n queryParams = options.query._getParams();\n if (queryParams) {\n query.where = queryParams.where;\n }\n }\n if (!query.where) {\n var error = new Error('options.query is not an AV.Query');\n throw error;\n }\n }\n\n _.extend(json, model._flags);\n\n var route = 'classes';\n var className = model.className;\n if (model.className === '_User' && !model.id) {\n // Special-case user sign-up.\n route = 'users';\n className = null;\n }\n //hook makeRequest in options.\n var makeRequest = options._makeRequest || _request;\n var requestPromise = makeRequest(route, className, model.id, method, json, options, query);\n\n requestPromise = requestPromise.then(function (resp) {\n var serverAttrs = model.parse(resp);\n if (options.wait) {\n serverAttrs = _.extend(attrs || {}, serverAttrs);\n }\n model._finishSave(serverAttrs);\n if (options.wait) {\n model.set(current, setOptions);\n }\n return model;\n }, function (error) {\n model._cancelSave();\n throw error;\n });\n\n return requestPromise;\n });\n return this._allPreviousSaves;\n },\n\n /**\n * Destroy this model on the server if it was already persisted.\n * Optimistically removes the model from its collection, if it has one.\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} [options.wait] wait for the server to respond\n * before removal.\n *\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n options = options || {};\n var model = this;\n\n var triggerDestroy = function triggerDestroy() {\n model.trigger('destroy', model, model.collection, options);\n };\n\n if (!this.id) {\n return triggerDestroy();\n }\n\n if (!options.wait) {\n triggerDestroy();\n }\n\n var request = _request('classes', this.className, this.id, 'DELETE', this._flags, options);\n return request.then(function () {\n if (options.wait) {\n triggerDestroy();\n }\n return model;\n });\n },\n\n /**\n * Converts a response into the hash of attributes to be set on the model.\n * @ignore\n */\n parse: function parse(resp) {\n var output = _.clone(resp);\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (output[key]) {\n output[key] = AV._parseDate(output[key]);\n }\n });\n if (output.createdAt && !output.updatedAt) {\n output.updatedAt = output.createdAt;\n }\n return output;\n },\n\n /**\n * Creates a new model with identical attributes to this one.\n * @return {AV.Object}\n */\n clone: function clone() {\n return new this.constructor(this.attributes);\n },\n\n /**\n * Returns true if this object has never been saved to AV.\n * @return {Boolean}\n */\n isNew: function isNew() {\n return !this.id;\n },\n\n /**\n * Call this method to manually fire a `\"change\"` event for this model and\n * a `\"change:attribute\"` event for each changed attribute.\n * Calling this will cause all objects observing the model to update.\n */\n change: function change(options) {\n options = options || {};\n var changing = this._changing;\n this._changing = true;\n\n // Silent changes become pending changes.\n var self = this;\n AV._objectEach(this._silent, function (attr) {\n self._pending[attr] = true;\n });\n\n // Silent changes are triggered.\n var changes = _.extend({}, options.changes, this._silent);\n this._silent = {};\n AV._objectEach(changes, function (unused_value, attr) {\n self.trigger('change:' + attr, self, self.get(attr), options);\n });\n if (changing) {\n return this;\n }\n\n // This is to get around lint not letting us make a function in a loop.\n var deleteChanged = function deleteChanged(value, attr) {\n if (!self._pending[attr] && !self._silent[attr]) {\n delete self.changed[attr];\n }\n };\n\n // Continue firing `\"change\"` events while there are pending changes.\n while (!_.isEmpty(this._pending)) {\n this._pending = {};\n this.trigger('change', this, options);\n // Pending and silent changes still remain.\n AV._objectEach(this.changed, deleteChanged);\n self._previousAttributes = _.clone(this.attributes);\n }\n\n this._changing = false;\n return this;\n },\n\n /**\n * Gets the previous value of an attribute, recorded at the time the last\n * <code>\"change\"</code> event was fired.\n * @param {String} attr Name of the attribute to get.\n */\n previous: function previous(attr) {\n if (!arguments.length || !this._previousAttributes) {\n return null;\n }\n return this._previousAttributes[attr];\n },\n\n /**\n * Gets all of the attributes of the model at the time of the previous\n * <code>\"change\"</code> event.\n * @return {Object}\n */\n previousAttributes: function previousAttributes() {\n return _.clone(this._previousAttributes);\n },\n\n /**\n * Checks if the model is currently in a valid state. It's only possible to\n * get into an *invalid* state if you're using silent changes.\n * @return {Boolean}\n */\n isValid: function isValid() {\n try {\n this.validate(this.attributes);\n } catch (error) {\n return false;\n }\n return true;\n },\n\n /**\n * You should not call this function directly unless you subclass\n * <code>AV.Object</code>, in which case you can override this method\n * to provide additional validation on <code>set</code> and\n * <code>save</code>. Your implementation should throw an Error if\n * the attrs is invalid\n *\n * @param {Object} attrs The current data to validate.\n * @see AV.Object#set\n */\n validate: function validate(attrs) {\n if (_.has(attrs, 'ACL') && !(attrs.ACL instanceof AV.ACL)) {\n throw new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n },\n\n /**\n * Run validation against a set of incoming attributes, returning `true`\n * if all is well. If a specific `error` callback has been passed,\n * call that instead of firing the general `\"error\"` event.\n * @private\n */\n _validate: function _validate(attrs, options) {\n if (options.silent || !this.validate) {\n return;\n }\n attrs = _.extend({}, this.attributes, attrs);\n this.validate(attrs);\n },\n\n /**\n * Returns the ACL for this object.\n * @returns {AV.ACL} An instance of AV.ACL.\n * @see AV.Object#get\n */\n getACL: function getACL() {\n return this.get('ACL');\n },\n\n /**\n * Sets the ACL to be used for this object.\n * @param {AV.ACL} acl An instance of AV.ACL.\n * @param {Object} options Optional Backbone-like options object to be\n * passed in to set.\n * @return {AV.Object} self\n * @see AV.Object#set\n */\n setACL: function setACL(acl, options) {\n return this.set('ACL', acl, options);\n },\n\n disableBeforeHook: function disableBeforeHook() {\n this.ignoreHook('beforeSave');\n this.ignoreHook('beforeUpdate');\n this.ignoreHook('beforeDelete');\n },\n\n disableAfterHook: function disableAfterHook() {\n this.ignoreHook('afterSave');\n this.ignoreHook('afterUpdate');\n this.ignoreHook('afterDelete');\n },\n\n ignoreHook: function ignoreHook(hookName) {\n if (!_.contains(['beforeSave', 'afterSave', 'beforeUpdate', 'afterUpdate', 'beforeDelete', 'afterDelete'], hookName)) {\n throw new Error('Unsupported hookName: ' + hookName);\n }\n\n if (!AV.hookKey) {\n throw new Error('ignoreHook required hookKey');\n }\n\n if (!this._flags.__ignore_hooks) {\n this._flags.__ignore_hooks = [];\n }\n\n this._flags.__ignore_hooks.push(hookName);\n }\n });\n\n /**\n * Creates an instance of a subclass of AV.Object for the give classname\n * and id.\n * @param {String|Function} class the className or a subclass of AV.Object.\n * @param {String} id The object id of this model.\n * @return {AV.Object} A new subclass instance of AV.Object.\n */\n AV.Object.createWithoutData = function (klass, id, hasData) {\n var _klass = void 0;\n if (_.isString(klass)) {\n _klass = AV.Object._getSubclass(klass);\n } else if (klass.prototype && klass.prototype instanceof AV.Object) {\n _klass = klass;\n } else {\n throw new Error('class must be a string or a subclass of AV.Object.');\n }\n if (!id) {\n throw new TypeError('The objectId must be provided');\n }\n var object = new _klass();\n object.id = id;\n object._hasData = hasData;\n return object;\n };\n /**\n * Delete objects in batch.\n * @param {AV.Object[]} objects The <code>AV.Object</code> array to be deleted.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n AV.Object.destroyAll = function (objects) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!objects || objects.length === 0) {\n return _promise2.default.resolve();\n }\n var objectsByClassNameAndFlags = _.groupBy(objects, function (object) {\n return (0, _stringify2.default)({\n className: object.className,\n flags: object._flags\n });\n });\n var body = {\n requests: _.map(objectsByClassNameAndFlags, function (objects) {\n var ids = _.map(objects, 'id').join(',');\n return {\n method: 'DELETE',\n path: '/1.1/classes/' + objects[0].className + '/' + ids,\n body: objects[0]._flags\n };\n })\n };\n return _request('batch', null, null, 'POST', body, options).then(function (response) {\n var firstError = _.find(response, function (result) {\n return !result.success;\n });\n if (firstError) throw new AVError(firstError.error.code, firstError.error.error);\n return undefined;\n });\n };\n\n /**\n * Returns the appropriate subclass for making new instances of the given\n * className string.\n * @private\n */\n AV.Object._getSubclass = function (className) {\n if (!_.isString(className)) {\n throw new Error('AV.Object._getSubclass requires a string argument.');\n }\n var ObjectClass = AV.Object._classMap[className];\n if (!ObjectClass) {\n ObjectClass = AV.Object.extend(className);\n AV.Object._classMap[className] = ObjectClass;\n }\n return ObjectClass;\n };\n\n /**\n * Creates an instance of a subclass of AV.Object for the given classname.\n * @private\n */\n AV.Object._create = function (className, attributes, options) {\n var ObjectClass = AV.Object._getSubclass(className);\n return new ObjectClass(attributes, options);\n };\n\n // Set up a map of className to class so that we can create new instances of\n // AV Objects from JSON automatically.\n AV.Object._classMap = {};\n\n AV.Object._extend = AV._extend;\n\n /**\n * Creates a new model with defined attributes,\n * It's the same with\n * <pre>\n * new AV.Object(attributes, options);\n * </pre>\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @return {AV.Object}\n * @since v0.4.4\n * @see AV.Object\n * @see AV.Object.extend\n */\n AV.Object['new'] = function (attributes, options) {\n return new AV.Object(attributes, options);\n };\n\n /**\n * Creates a new subclass of AV.Object for the given AV class name.\n *\n * <p>Every extension of a AV class will inherit from the most recent\n * previous extension of that class. When a AV.Object is automatically\n * created by parsing JSON, it will use the most recent extension of that\n * class.</p>\n *\n * @example\n * var MyClass = AV.Object.extend(\"MyClass\", {\n * // Instance properties\n * }, {\n * // Class properties\n * });\n *\n * @param {String} className The name of the AV class backing this model.\n * @param {Object} protoProps Instance properties to add to instances of the\n * class returned from this method.\n * @param {Object} classProps Class properties to add the class returned from\n * this method.\n * @return {Class} A new subclass of AV.Object.\n */\n AV.Object.extend = function (className, protoProps, classProps) {\n // Handle the case with only two args.\n if (!_.isString(className)) {\n if (className && _.has(className, 'className')) {\n return AV.Object.extend(className.className, className, protoProps);\n } else {\n throw new Error(\"AV.Object.extend's first argument should be the className.\");\n }\n }\n\n // If someone tries to subclass \"User\", coerce it to the right type.\n if (className === 'User') {\n className = '_User';\n }\n\n var NewClassObject = null;\n if (_.has(AV.Object._classMap, className)) {\n var OldClassObject = AV.Object._classMap[className];\n // This new subclass has been told to extend both from \"this\" and from\n // OldClassObject. This is multiple inheritance, which isn't supported.\n // For now, let's just pick one.\n if (protoProps || classProps) {\n NewClassObject = OldClassObject._extend(protoProps, classProps);\n } else {\n return OldClassObject;\n }\n } else {\n protoProps = protoProps || {};\n protoProps._className = className;\n NewClassObject = this._extend(protoProps, classProps);\n }\n // Extending a subclass should reuse the classname automatically.\n NewClassObject.extend = function (arg0) {\n if (_.isString(arg0) || arg0 && _.has(arg0, 'className')) {\n return AV.Object.extend.apply(NewClassObject, arguments);\n }\n var newArguments = [className].concat(_.toArray(arguments));\n return AV.Object.extend.apply(NewClassObject, newArguments);\n };\n // Add the query property descriptor.\n Object.defineProperty(NewClassObject, 'query', (0, _getOwnPropertyDescriptor2.default)(AV.Object, 'query'));\n NewClassObject['new'] = function (attributes, options) {\n return new NewClassObject(attributes, options);\n };\n AV.Object._classMap[className] = NewClassObject;\n return NewClassObject;\n };\n\n // ES6 class syntax support\n Object.defineProperty(AV.Object.prototype, 'className', {\n get: function get() {\n var className = this._className || this.constructor._LCClassName || this.constructor.name;\n // If someone tries to subclass \"User\", coerce it to the right type.\n if (className === 'User') {\n return '_User';\n }\n return className;\n }\n });\n\n /**\n * Register a class.\n * If a subclass of <code>AV.Object</code> is defined with your own implement\n * rather then <code>AV.Object.extend</code>, the subclass must be registered.\n * @param {Function} klass A subclass of <code>AV.Object</code>\n * @param {String} [name] Specify the name of the class. Useful when the class might be uglified.\n * @example\n * class Person extend AV.Object {}\n * AV.Object.register(Person);\n */\n AV.Object.register = function (klass, name) {\n if (!(klass.prototype instanceof AV.Object)) {\n throw new Error('registered class is not a subclass of AV.Object');\n }\n var className = name || klass.name;\n if (!className.length) {\n throw new Error('registered class must be named');\n }\n if (name) {\n klass._LCClassName = name;\n }\n AV.Object._classMap[className] = klass;\n };\n\n /**\n * Get a new Query of the current class\n * @name query\n * @memberof AV.Object\n * @type AV.Query\n * @readonly\n * @since v3.1.0\n * @example\n * const Post = AV.Object.extend('Post');\n * Post.query.equalTo('author', 'leancloud').find().then();\n */\n Object.defineProperty(AV.Object, 'query', {\n get: function get() {\n return new AV.Query(this.prototype.className);\n }\n });\n\n AV.Object._findUnsavedChildren = function (objects, children, files) {\n AV._traverse(objects, function (object) {\n if (object instanceof AV.Object) {\n if (object.dirty()) {\n children.push(object);\n }\n return;\n }\n\n if (object instanceof AV.File) {\n if (!object.id) {\n files.push(object);\n }\n return;\n }\n });\n };\n\n AV.Object._canBeSerializedAsValue = function (object) {\n var canBeSerializedAsValue = true;\n\n if (object instanceof AV.Object || object instanceof AV.File) {\n canBeSerializedAsValue = !!object.id;\n } else if (_.isArray(object)) {\n AV._arrayEach(object, function (child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n } else if (_.isObject(object)) {\n AV._objectEach(object, function (child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n }\n\n return canBeSerializedAsValue;\n };\n\n AV.Object._deepSaveAsync = function (object, model, options) {\n var unsavedChildren = [];\n var unsavedFiles = [];\n AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles);\n\n unsavedFiles = _.uniq(unsavedFiles);\n\n var promise = _promise2.default.resolve();\n _.each(unsavedFiles, function (file) {\n promise = promise.then(function () {\n return file.save();\n });\n });\n\n var objects = _.uniq(unsavedChildren);\n var remaining = _.uniq(objects);\n\n return promise.then(function () {\n return continueWhile(function () {\n return remaining.length > 0;\n }, function () {\n // Gather up all the objects that can be saved in this batch.\n var batch = [];\n var newRemaining = [];\n AV._arrayEach(remaining, function (object) {\n if (object._canBeSerialized()) {\n batch.push(object);\n } else {\n newRemaining.push(object);\n }\n });\n remaining = newRemaining;\n\n // If we can't save any objects, there must be a circular reference.\n if (batch.length === 0) {\n return _promise2.default.reject(new AVError(AVError.OTHER_CAUSE, 'Tried to save a batch with a cycle.'));\n }\n\n // Reserve a spot in every object's save queue.\n var readyToStart = _promise2.default.resolve(_.map(batch, function (object) {\n return object._allPreviousSaves || _promise2.default.resolve();\n }));\n\n // Save a single batch, whether previous saves succeeded or failed.\n var bathSavePromise = readyToStart.then(function () {\n return _request('batch', null, null, 'POST', {\n requests: _.map(batch, function (object) {\n var method = object.id ? 'PUT' : 'POST';\n\n var json = object._getSaveJSON();\n\n _.extend(json, object._flags);\n\n var route = 'classes';\n var className = object.className;\n var path = '/' + route + '/' + className;\n if (object.className === '_User' && !object.id) {\n // Special-case user sign-up.\n path = '/users';\n }\n\n var path = '/1.1' + path;\n if (object.id) {\n path = path + '/' + object.id;\n }\n\n object._startSave();\n\n return {\n method: method,\n path: path,\n body: json,\n params: options && options.fetchWhenSave ? { fetchWhenSave: true } : undefined\n };\n })\n }, options).then(function (response) {\n var results = _.map(batch, function (object, i) {\n if (response[i].success) {\n object._finishSave(object.parse(response[i].success));\n return object;\n }\n object._cancelSave();\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n });\n AV._arrayEach(batch, function (object) {\n object._allPreviousSaves = bathSavePromise;\n });\n return bathSavePromise;\n });\n }).then(function () {\n return object;\n });\n };\n};\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(315), __esModule: true };\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(316);\nvar $Object = __webpack_require__(2).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n/***/ }),\n/* 316 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(25);\nvar $getOwnPropertyDescriptor = __webpack_require__(90).f;\n\n__webpack_require__(85)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _isIterable2 = __webpack_require__(318);\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = __webpack_require__(162);\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n/***/ }),\n/* 318 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(319), __esModule: true };\n\n/***/ }),\n/* 319 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(54);\n__webpack_require__(47);\nmodule.exports = __webpack_require__(320);\n\n\n/***/ }),\n/* 320 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(68);\nvar ITERATOR = __webpack_require__(7)('iterator');\nvar Iterators = __webpack_require__(30);\nmodule.exports = __webpack_require__(2).isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n\n\n/***/ }),\n/* 321 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\nvar AVError = __webpack_require__(29);\n\nmodule.exports = function (AV) {\n AV.Role = AV.Object.extend('_Role',\n /** @lends AV.Role.prototype */{\n // Instance Methods\n\n /**\n * Represents a Role on the AV server. Roles represent groupings of\n * Users for the purposes of granting permissions (e.g. specifying an ACL\n * for an Object). Roles are specified by their sets of child users and\n * child roles, all of which are granted any permissions that the parent\n * role has.\n *\n * <p>Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.</p>\n * An AV.Role is a local representation of a role persisted to the AV\n * cloud.\n * @class AV.Role\n * @param {String} name The name of the Role to create.\n * @param {AV.ACL} acl The ACL for this role.\n */\n constructor: function constructor(name, acl) {\n if (_.isString(name)) {\n AV.Object.prototype.constructor.call(this, null, null);\n this.setName(name);\n } else {\n AV.Object.prototype.constructor.call(this, name, acl);\n }\n if (acl) {\n if (!(acl instanceof AV.ACL)) {\n throw new TypeError('acl must be an instance of AV.ACL');\n } else {\n this.setACL(acl);\n }\n }\n },\n\n /**\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @return {String} the name of the role.\n */\n getName: function getName() {\n return this.get('name');\n },\n\n /**\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n * <p>\n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n * </p>\n *\n * <p>This is equivalent to calling role.set(\"name\", name)</p>\n *\n * @param {String} name The name of the role.\n */\n setName: function setName(name, options) {\n return this.set('name', name, options);\n },\n\n /**\n * Gets the AV.Relation for the AV.Users that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"users\")</p>\n *\n * @return {AV.Relation} the relation for the users belonging to this\n * role.\n */\n getUsers: function getUsers() {\n return this.relation('users');\n },\n\n /**\n * Gets the AV.Relation for the AV.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"roles\")</p>\n *\n * @return {AV.Relation} the relation for the roles belonging to this\n * role.\n */\n getRoles: function getRoles() {\n return this.relation('roles');\n },\n\n /**\n * @ignore\n */\n validate: function validate(attrs, options) {\n if ('name' in attrs && attrs.name !== this.getName()) {\n var newName = attrs.name;\n if (this.id && this.id !== attrs.objectId) {\n // Check to see if the objectId being set matches this.id.\n // This happens during a fetch -- the id is set before calling fetch.\n // Let the name be set in this case.\n return new AVError(AVError.OTHER_CAUSE, \"A role's name can only be set before it has been saved.\");\n }\n if (!_.isString(newName)) {\n return new AVError(AVError.OTHER_CAUSE, \"A role's name must be a String.\");\n }\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new AVError(AVError.OTHER_CAUSE, \"A role's name can only contain alphanumeric characters, _,\" + ' -, and spaces.');\n }\n }\n if (AV.Object.prototype.validate) {\n return AV.Object.prototype.validate.call(this, attrs, options);\n }\n return false;\n }\n });\n};\n\n/***/ }),\n/* 322 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _defineProperty2 = __webpack_require__(323);\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar uuid = __webpack_require__(154);\nvar AVError = __webpack_require__(29);\n\nvar _require = __webpack_require__(12),\n AVRequest = _require._request,\n request = _require.request;\n\nvar _require2 = __webpack_require__(36),\n getAdapter = _require2.getAdapter;\n\nvar PLATFORM_ANONYMOUS = 'anonymous';\nvar PLATFORM_QQAPP = 'lc_qqapp';\n\nvar mergeUnionDataIntoAuthData = function mergeUnionDataIntoAuthData() {\n var defaultUnionIdPlatform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'weixin';\n return function (authData, unionId) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$unionIdPlatform = _ref.unionIdPlatform,\n unionIdPlatform = _ref$unionIdPlatform === undefined ? defaultUnionIdPlatform : _ref$unionIdPlatform,\n _ref$asMainAccount = _ref.asMainAccount,\n asMainAccount = _ref$asMainAccount === undefined ? false : _ref$asMainAccount;\n\n if (typeof unionId !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionId is not a string');\n if (typeof unionIdPlatform !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionIdPlatform is not a string');\n\n return _.extend({}, authData, {\n platform: unionIdPlatform,\n unionid: unionId,\n main_account: Boolean(asMainAccount)\n });\n };\n};\n\nmodule.exports = function (AV) {\n /**\n * @class\n *\n * <p>An AV.User object is a local representation of a user persisted to the\n * LeanCloud server. This class is a subclass of an AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * user specific methods, like authentication, signing up, and validation of\n * uniqueness.</p>\n */\n AV.User = AV.Object.extend('_User',\n /** @lends AV.User.prototype */{\n // Instance Variables\n _isCurrentUser: false,\n\n // Instance Methods\n\n /**\n * Internal method to handle special fields in a _User response.\n * @private\n */\n _mergeMagicFields: function _mergeMagicFields(attrs) {\n if (attrs.sessionToken) {\n this._sessionToken = attrs.sessionToken;\n delete attrs.sessionToken;\n }\n return AV.User.__super__._mergeMagicFields.call(this, attrs);\n },\n\n /**\n * Removes null values from authData (which exist temporarily for\n * unlinking)\n * @private\n */\n _cleanupAuthData: function _cleanupAuthData() {\n if (!this.isCurrent()) {\n return;\n }\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n AV._objectEach(this.get('authData'), function (value, key) {\n if (!authData[key]) {\n delete authData[key];\n }\n });\n },\n\n /**\n * Synchronizes authData for all providers.\n * @private\n */\n _synchronizeAllAuthData: function _synchronizeAllAuthData() {\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n\n var self = this;\n AV._objectEach(this.get('authData'), function (value, key) {\n self._synchronizeAuthData(key);\n });\n },\n\n /**\n * Synchronizes auth data for a provider (e.g. puts the access token in the\n * right place to be used by the Facebook SDK).\n * @private\n */\n _synchronizeAuthData: function _synchronizeAuthData(provider) {\n if (!this.isCurrent()) {\n return;\n }\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[authType];\n } else {\n authType = provider.getAuthType();\n }\n var authData = this.get('authData');\n if (!authData || !provider) {\n return;\n }\n var success = provider.restoreAuthentication(authData[authType]);\n if (!success) {\n this.dissociateAuthData(provider);\n }\n },\n\n _handleSaveResult: function _handleSaveResult(makeCurrent) {\n // Clean up and synchronize the authData object, removing any unset values\n if (makeCurrent && !AV._config.disableCurrentUser) {\n this._isCurrentUser = true;\n }\n this._cleanupAuthData();\n this._synchronizeAllAuthData();\n // Don't keep the password around.\n delete this._serverData.password;\n this._rebuildEstimatedDataForKey('password');\n this._refreshCache();\n if ((makeCurrent || this.isCurrent()) && !AV._config.disableCurrentUser) {\n // Some old version of leanengine-node-sdk will overwrite\n // AV.User._saveCurrentUser which returns no Promise.\n // So we need a Promise wrapper.\n return _promise2.default.resolve(AV.User._saveCurrentUser(this));\n } else {\n return _promise2.default.resolve();\n }\n },\n\n /**\n * Unlike in the Android/iOS SDKs, logInWith is unnecessary, since you can\n * call linkWith on the user (even if it doesn't exist yet on the server).\n * @private\n */\n _linkWith: function _linkWith(provider, data) {\n var _this = this;\n\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$failOnNotExist = _ref2.failOnNotExist,\n failOnNotExist = _ref2$failOnNotExist === undefined ? false : _ref2$failOnNotExist;\n\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[provider];\n } else {\n authType = provider.getAuthType();\n }\n if (data) {\n return this.save({ authData: (0, _defineProperty3.default)({}, authType, data) }, {\n fetchWhenSave: !!this.get('authData'),\n _failOnNotExist: failOnNotExist\n }).then(function (model) {\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n } else {\n return provider.authenticate().then(function (result) {\n return _this._linkWith(provider, result);\n });\n }\n },\n\n /**\n * Associate the user with a third party authData.\n * @since 3.3.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthData: function associateWithAuthData(authData, platform) {\n return this._linkWith(platform, authData);\n },\n\n\n /**\n * Associate the user with a third party authData and unionId.\n * @since 3.5.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthDataAndUnionId: function associateWithAuthDataAndUnionId(authData, platform, unionId, unionOptions) {\n return this._linkWith(platform, mergeUnionDataIntoAuthData()(authData, unionId, unionOptions));\n },\n\n\n /**\n * Associate the user with the identity of the current mini-app.\n * @since 4.6.0\n * @param {Object} [authInfo]\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n * @return {Promise<AV.User>}\n */\n associateWithMiniApp: function associateWithMiniApp(authInfo, option) {\n var _this2 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this2._linkWith(authInfo.provider, authInfo.authData, option);\n });\n }\n return this._linkWith(authInfo.provider, authInfo.authData, option);\n },\n\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的微信帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQApp: function associateWithQQApp() {\n var _this3 = this;\n\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$preferUnionId = _ref3.preferUnionId,\n preferUnionId = _ref3$preferUnionId === undefined ? false : _ref3$preferUnionId,\n _ref3$unionIdPlatform = _ref3.unionIdPlatform,\n unionIdPlatform = _ref3$unionIdPlatform === undefined ? 'qq' : _ref3$unionIdPlatform,\n _ref3$asMainAccount = _ref3.asMainAccount,\n asMainAccount = _ref3$asMainAccount === undefined ? true : _ref3$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this3.associateWithMiniApp(authInfo);\n });\n },\n\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeapp: function associateWithWeapp() {\n var _this4 = this;\n\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$preferUnionId = _ref4.preferUnionId,\n preferUnionId = _ref4$preferUnionId === undefined ? false : _ref4$preferUnionId,\n _ref4$unionIdPlatform = _ref4.unionIdPlatform,\n unionIdPlatform = _ref4$unionIdPlatform === undefined ? 'weixin' : _ref4$unionIdPlatform,\n _ref4$asMainAccount = _ref4.asMainAccount,\n asMainAccount = _ref4$asMainAccount === undefined ? true : _ref4$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this4.associateWithMiniApp(authInfo);\n });\n },\n\n\n /**\n * @deprecated renamed to {@link AV.User#associateWithWeapp}\n * @return {Promise<AV.User>}\n */\n linkWithWeapp: function linkWithWeapp(options) {\n console.warn('DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替');\n return this.associateWithWeapp(options);\n },\n\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的 QQ 帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQAppWithUnionId: function associateWithQQAppWithUnionId(unionId) {\n var _this5 = this;\n\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref5$unionIdPlatform = _ref5.unionIdPlatform,\n unionIdPlatform = _ref5$unionIdPlatform === undefined ? 'qq' : _ref5$unionIdPlatform,\n _ref5$asMainAccount = _ref5.asMainAccount,\n asMainAccount = _ref5$asMainAccount === undefined ? false : _ref5$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount: asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return _this5.associateWithMiniApp(authInfo);\n });\n },\n\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeappWithUnionId: function associateWithWeappWithUnionId(unionId) {\n var _this6 = this;\n\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref6$unionIdPlatform = _ref6.unionIdPlatform,\n unionIdPlatform = _ref6$unionIdPlatform === undefined ? 'weixin' : _ref6$unionIdPlatform,\n _ref6$asMainAccount = _ref6.asMainAccount,\n asMainAccount = _ref6$asMainAccount === undefined ? false : _ref6$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount: asMainAccount });\n return _this6.associateWithMiniApp(authInfo);\n });\n },\n\n\n /**\n * Unlinks a user from a service.\n * @param {string} platform\n * @return {Promise<AV.User>}\n * @since 3.3.0\n */\n dissociateAuthData: function dissociateAuthData(provider) {\n this.unset('authData.' + provider);\n return this.save().then(function (model) {\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n\n /**\n * @private\n * @deprecated\n */\n _unlinkFrom: function _unlinkFrom(provider) {\n console.warn('DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替');\n return this.dissociateAuthData(provider);\n },\n\n\n /**\n * Checks whether a user is linked to a service.\n * @private\n */\n _isLinked: function _isLinked(provider) {\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n } else {\n authType = provider.getAuthType();\n }\n var authData = this.get('authData') || {};\n return !!authData[authType];\n },\n\n /**\n * Checks whether a user is anonymous.\n * @since 3.9.0\n * @return {boolean}\n */\n isAnonymous: function isAnonymous() {\n return this._isLinked(PLATFORM_ANONYMOUS);\n },\n\n\n logOut: function logOut() {\n this._logOutWithAll();\n this._isCurrentUser = false;\n },\n\n /**\n * Deauthenticates all providers.\n * @private\n */\n _logOutWithAll: function _logOutWithAll() {\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n var self = this;\n AV._objectEach(this.get('authData'), function (value, key) {\n self._logOutWith(key);\n });\n },\n\n /**\n * Deauthenticates a single provider (e.g. removing access tokens from the\n * Facebook SDK).\n * @private\n */\n _logOutWith: function _logOutWith(provider) {\n if (!this.isCurrent()) {\n return;\n }\n if (_.isString(provider)) {\n provider = AV.User._authProviders[provider];\n }\n if (provider && provider.deauthenticate) {\n provider.deauthenticate();\n }\n },\n\n /**\n * Signs up a new user. You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUp\n */\n signUp: function signUp(attrs, options) {\n var error;\n\n var username = attrs && attrs.username || this.get('username');\n if (!username || username === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty name.');\n throw error;\n }\n\n var password = attrs && attrs.password || this.get('password');\n if (!password || password === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty password.');\n throw error;\n }\n\n return this.save(attrs, options).then(function (model) {\n if (model.isAnonymous()) {\n model.unset('authData.' + PLATFORM_ANONYMOUS);\n model._opSetQueue = [{}];\n }\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Signs up a new user with mobile phone and sms code.\n * You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(attrs) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var error;\n\n var mobilePhoneNumber = attrs && attrs.mobilePhoneNumber || this.get('mobilePhoneNumber');\n if (!mobilePhoneNumber || mobilePhoneNumber === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty mobilePhoneNumber.');\n throw error;\n }\n\n var smsCode = attrs && attrs.smsCode || this.get('smsCode');\n if (!smsCode || smsCode === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty smsCode.');\n throw error;\n }\n\n options._makeRequest = function (route, className, id, method, json) {\n return AVRequest('usersByMobilePhone', null, null, 'POST', json);\n };\n return this.save(attrs, options).then(function (model) {\n delete model.attributes.smsCode;\n delete model._serverData.smsCode;\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthData}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthData: function loginWithAuthData(authData, platform, options) {\n return this._linkWith(platform, authData, options);\n },\n\n\n /**\n * The same with {@link AV.User.loginWithAuthDataAndUnionId}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) {\n return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions);\n },\n\n\n /**\n * The same with {@link AV.User.loginWithWeapp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.7.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n loginWithWeapp: function loginWithWeapp() {\n var _this7 = this;\n\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$preferUnionId = _ref7.preferUnionId,\n preferUnionId = _ref7$preferUnionId === undefined ? false : _ref7$preferUnionId,\n _ref7$unionIdPlatform = _ref7.unionIdPlatform,\n unionIdPlatform = _ref7$unionIdPlatform === undefined ? 'weixin' : _ref7$unionIdPlatform,\n _ref7$asMainAccount = _ref7.asMainAccount,\n asMainAccount = _ref7$asMainAccount === undefined ? true : _ref7$asMainAccount,\n _ref7$failOnNotExist = _ref7.failOnNotExist,\n failOnNotExist = _ref7$failOnNotExist === undefined ? false : _ref7$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this7.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.13.0\n */\n loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) {\n var _this8 = this;\n\n var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref8$unionIdPlatform = _ref8.unionIdPlatform,\n unionIdPlatform = _ref8$unionIdPlatform === undefined ? 'weixin' : _ref8$unionIdPlatform,\n _ref8$asMainAccount = _ref8.asMainAccount,\n asMainAccount = _ref8$asMainAccount === undefined ? false : _ref8$asMainAccount,\n _ref8$failOnNotExist = _ref8.failOnNotExist,\n failOnNotExist = _ref8$failOnNotExist === undefined ? false : _ref8$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount: asMainAccount });\n return _this8.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n */\n loginWithQQApp: function loginWithQQApp() {\n var _this9 = this;\n\n var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref9$preferUnionId = _ref9.preferUnionId,\n preferUnionId = _ref9$preferUnionId === undefined ? false : _ref9$preferUnionId,\n _ref9$unionIdPlatform = _ref9.unionIdPlatform,\n unionIdPlatform = _ref9$unionIdPlatform === undefined ? 'qq' : _ref9$unionIdPlatform,\n _ref9$asMainAccount = _ref9.asMainAccount,\n asMainAccount = _ref9$asMainAccount === undefined ? true : _ref9$asMainAccount,\n _ref9$failOnNotExist = _ref9.failOnNotExist,\n failOnNotExist = _ref9$failOnNotExist === undefined ? false : _ref9$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this9.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n */\n loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) {\n var _this10 = this;\n\n var _ref10 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref10$unionIdPlatfor = _ref10.unionIdPlatform,\n unionIdPlatform = _ref10$unionIdPlatfor === undefined ? 'qq' : _ref10$unionIdPlatfor,\n _ref10$asMainAccount = _ref10.asMainAccount,\n asMainAccount = _ref10$asMainAccount === undefined ? false : _ref10$asMainAccount,\n _ref10$failOnNotExist = _ref10.failOnNotExist,\n failOnNotExist = _ref10$failOnNotExist === undefined ? false : _ref10$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount: asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return _this10.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.\n * @since 4.6.0\n */\n loginWithMiniApp: function loginWithMiniApp(authInfo, option) {\n var _this11 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this11.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n });\n }\n return this.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n },\n\n\n /**\n * Logs in a AV.User. On success, this saves the session to localStorage,\n * so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling logIn.</p>\n *\n * @see AV.User.logIn\n * @return {Promise} A promise that is fulfilled with the user when\n * the login is complete.\n */\n logIn: function logIn() {\n var model = this;\n var request = AVRequest('login', null, null, 'POST', this.toJSON());\n return request.then(function (resp) {\n var serverAttrs = model.parse(resp);\n model._finishFetch(serverAttrs);\n return model._handleSaveResult(true).then(function () {\n if (!serverAttrs.smsCode) delete model.attributes['smsCode'];\n return model;\n });\n });\n },\n /**\n * @see AV.Object#save\n */\n save: function save(arg1, arg2, arg3) {\n var attrs, options;\n if (_.isObject(arg1) || _.isNull(arg1) || _.isUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n options = options || {};\n\n return AV.Object.prototype.save.call(this, attrs, options).then(function (model) {\n return model._handleSaveResult(false).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Follow a user\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as\n * conditions of followerQuery/followeeQuery.\n * @param {AuthOptions} [authOptions]\n */\n follow: function follow(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n var user = void 0;\n var attributes = void 0;\n if (options.user) {\n user = options.user;\n attributes = options.attributes;\n } else {\n user = options;\n }\n var userObjectId = _.isString(user) ? user : user.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'POST', AV._encode(attributes), authOptions);\n return request;\n },\n\n /**\n * Unfollow a user.\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to unfollow.\n * @param {AuthOptions} [authOptions]\n */\n unfollow: function unfollow(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n var user = void 0;\n if (options.user) {\n user = options.user;\n } else {\n user = options;\n }\n var userObjectId = _.isString(user) ? user : user.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'DELETE', null, authOptions);\n return request;\n },\n\n /**\n * Get the user's followers and followees.\n * @since 4.8.0\n * @param {Object} [options]\n * @param {Number} [options.skip]\n * @param {Number} [options.limit]\n * @param {AuthOptions} [authOptions]\n */\n getFollowersAndFollowees: function getFollowersAndFollowees(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n return request({\n method: 'GET',\n path: '/users/' + this.id + '/followersAndFollowees',\n query: {\n skip: options && options.skip,\n limit: options && options.limit,\n include: 'follower,followee',\n keys: 'follower,followee'\n },\n authOptions: authOptions\n }).then(function (_ref11) {\n var followers = _ref11.followers,\n followees = _ref11.followees;\n return {\n followers: followers.map(function (_ref12) {\n var follower = _ref12.follower;\n return AV._decode(follower);\n }),\n followees: followees.map(function (_ref13) {\n var followee = _ref13.followee;\n return AV._decode(followee);\n })\n };\n });\n },\n\n /**\n *Create a follower query to query the user's followers.\n * @since 0.3.0\n * @see AV.User#followerQuery\n */\n followerQuery: function followerQuery() {\n return AV.User.followerQuery(this.id);\n },\n\n /**\n *Create a followee query to query the user's followees.\n * @since 0.3.0\n * @see AV.User#followeeQuery\n */\n followeeQuery: function followeeQuery() {\n return AV.User.followeeQuery(this.id);\n },\n\n /**\n * @see AV.Object#fetch\n */\n fetch: function fetch(fetchOptions, options) {\n return AV.Object.prototype.fetch.call(this, fetchOptions, options).then(function (model) {\n return model._handleSaveResult(false).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Update user's new password safely based on old password.\n * @param {String} oldPassword the old password.\n * @param {String} newPassword the new password.\n * @param {AuthOptions} options\n */\n updatePassword: function updatePassword(oldPassword, newPassword, options) {\n var _this12 = this;\n\n var route = 'users/' + this.id + '/updatePassword';\n var params = {\n old_password: oldPassword,\n new_password: newPassword\n };\n var request = AVRequest(route, null, null, 'PUT', params, options);\n return request.then(function (resp) {\n _this12._finishFetch(_this12.parse(resp));\n return _this12._handleSaveResult(true).then(function () {\n return resp;\n });\n });\n },\n\n /**\n * Returns true if <code>current</code> would return this user.\n * @see AV.User#current\n */\n isCurrent: function isCurrent() {\n return this._isCurrentUser;\n },\n\n /**\n * Returns get(\"username\").\n * @return {String}\n * @see AV.Object#get\n */\n getUsername: function getUsername() {\n return this.get('username');\n },\n\n /**\n * Returns get(\"mobilePhoneNumber\").\n * @return {String}\n * @see AV.Object#get\n */\n getMobilePhoneNumber: function getMobilePhoneNumber() {\n return this.get('mobilePhoneNumber');\n },\n\n /**\n * Calls set(\"mobilePhoneNumber\", phoneNumber, options) and returns the result.\n * @param {String} mobilePhoneNumber\n * @return {Boolean}\n * @see AV.Object#set\n */\n setMobilePhoneNumber: function setMobilePhoneNumber(phone, options) {\n return this.set('mobilePhoneNumber', phone, options);\n },\n\n /**\n * Calls set(\"username\", username, options) and returns the result.\n * @param {String} username\n * @return {Boolean}\n * @see AV.Object#set\n */\n setUsername: function setUsername(username, options) {\n return this.set('username', username, options);\n },\n\n /**\n * Calls set(\"password\", password, options) and returns the result.\n * @param {String} password\n * @return {Boolean}\n * @see AV.Object#set\n */\n setPassword: function setPassword(password, options) {\n return this.set('password', password, options);\n },\n\n /**\n * Returns get(\"email\").\n * @return {String}\n * @see AV.Object#get\n */\n getEmail: function getEmail() {\n return this.get('email');\n },\n\n /**\n * Calls set(\"email\", email, options) and returns the result.\n * @param {String} email\n * @param {AuthOptions} options\n * @return {Boolean}\n * @see AV.Object#set\n */\n setEmail: function setEmail(email, options) {\n return this.set('email', email, options);\n },\n\n /**\n * Checks whether this user is the current user and has been authenticated.\n * @deprecated 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),\n * 如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id\n * @return (Boolean) whether this user is the current user and is logged in.\n */\n authenticated: function authenticated() {\n console.warn('DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。');\n return !!this._sessionToken && !AV._config.disableCurrentUser && AV.User.current() && AV.User.current().id === this.id;\n },\n\n /**\n * Detects if current sessionToken is valid.\n *\n * @since 2.0.0\n * @return Promise.<Boolean>\n */\n isAuthenticated: function isAuthenticated() {\n var _this13 = this;\n\n return _promise2.default.resolve().then(function () {\n return !!_this13._sessionToken && AV.User._fetchUserBySessionToken(_this13._sessionToken).then(function () {\n return true;\n }, function (error) {\n if (error.code === 211) {\n return false;\n }\n throw error;\n });\n });\n },\n\n\n /**\n * Get sessionToken of current user.\n * @return {String} sessionToken\n */\n getSessionToken: function getSessionToken() {\n return this._sessionToken;\n },\n\n\n /**\n * Refresh sessionToken of current user.\n * @since 2.1.0\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.User>} user with refreshed sessionToken\n */\n refreshSessionToken: function refreshSessionToken(options) {\n var _this14 = this;\n\n return AVRequest('users/' + this.id + '/refreshSessionToken', null, null, 'PUT', null, options).then(function (response) {\n _this14._finishFetch(response);\n return _this14._handleSaveResult(true).then(function () {\n return _this14;\n });\n });\n },\n\n\n /**\n * Get this user's Roles.\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.Role[]>} A promise that is fulfilled with the roles when\n * the query is complete.\n */\n getRoles: function getRoles(options) {\n return AV.Relation.reverseQuery('_Role', 'users', this).find(options);\n }\n },\n /** @lends AV.User */{\n // Class Variables\n\n // The currently logged-in user.\n _currentUser: null,\n\n // Whether currentUser is known to match the serialized version on disk.\n // This is useful for saving a localstorage check if you try to load\n // _currentUser frequently while there is none stored.\n _currentUserMatchesDisk: false,\n\n // The localStorage key suffix that the current user is stored under.\n _CURRENT_USER_KEY: 'currentUser',\n\n // The mapping of auth provider names to actual providers\n _authProviders: {},\n\n // Class Methods\n\n /**\n * Signs up a new user with a username (or email) and password.\n * This will create a new AV.User on the server, and also persist the\n * session in localStorage so that you can access the user using\n * {@link #current}.\n *\n * @param {String} username The username (or email) to sign up with.\n * @param {String} password The password to sign up with.\n * @param {Object} [attrs] Extra fields to set on the new user.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that is fulfilled with the user when\n * the signup completes.\n * @see AV.User#signUp\n */\n signUp: function signUp(username, password, attrs, options) {\n attrs = attrs || {};\n attrs.username = username;\n attrs.password = password;\n var user = AV.Object._create('_User');\n return user.signUp(attrs, options);\n },\n\n /**\n * Logs in a user with a username (or email) and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} username The username (or email) to log in with.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logIn: function logIn(username, password) {\n var user = AV.Object._create('_User');\n user._finishFetch({ username: username, password: password });\n return user.logIn();\n },\n\n /**\n * Logs in a user with a session token. On success, this saves the session\n * to disk, so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * @param {String} sessionToken The sessionToken to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n become: function become(sessionToken) {\n return this._fetchUserBySessionToken(sessionToken).then(function (user) {\n return user._handleSaveResult(true).then(function () {\n return user;\n });\n });\n },\n\n _fetchUserBySessionToken: function _fetchUserBySessionToken(sessionToken) {\n if (sessionToken === undefined) {\n return _promise2.default.reject(new Error('The sessionToken cannot be undefined'));\n }\n\n var user = AV.Object._create('_User');\n return request({\n method: 'GET',\n path: '/users/me',\n authOptions: {\n sessionToken: sessionToken\n }\n }).then(function (resp) {\n var serverAttrs = user.parse(resp);\n user._finishFetch(serverAttrs);\n return user;\n });\n },\n\n /**\n * Logs in a user with a mobile phone number and sms code sent by\n * AV.User.requestLoginSmsCode.On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} smsCode The sms code sent by AV.User.requestLoginSmsCode\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhoneSmsCode: function logInWithMobilePhoneSmsCode(mobilePhone, smsCode) {\n var user = AV.Object._create('_User');\n user._finishFetch({ mobilePhoneNumber: mobilePhone, smsCode: smsCode });\n return user.logIn();\n },\n\n /**\n * Signs up or logs in a user with a mobilePhoneNumber and smsCode.\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @param {String} mobilePhoneNumber The user's mobilePhoneNumber.\n * @param {String} smsCode The sms code sent by AV.Cloud.requestSmsCode\n * @param {Object} attributes The user's other attributes such as username etc.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(mobilePhoneNumber, smsCode, attrs, options) {\n attrs = attrs || {};\n attrs.mobilePhoneNumber = mobilePhoneNumber;\n attrs.smsCode = smsCode;\n var user = AV.Object._create('_User');\n return user.signUpOrlogInWithMobilePhone(attrs, options);\n },\n\n /**\n * Logs in a user with a mobile phone number and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhone: function logInWithMobilePhone(mobilePhone, password) {\n var user = AV.Object._create('_User');\n user._finishFetch({\n mobilePhoneNumber: mobilePhone,\n password: password\n });\n return user.logIn();\n },\n\n /**\n * Logs in a user with email and password.\n *\n * @since 3.13.0\n * @param {String} email The user's email.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n loginWithEmail: function loginWithEmail(email, password) {\n var user = AV.Object._create('_User');\n user._finishFetch({\n email: email,\n password: password\n });\n return user.logIn();\n },\n\n\n /**\n * Signs up or logs in a user with a third party auth data(AccessToken).\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @example AV.User.loginWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n * @see {@link https://leancloud.cn/docs/js_guide.html#绑定第三方平台账户}\n */\n loginWithAuthData: function loginWithAuthData(authData, platform, options) {\n return AV.User._logInWith(platform, authData, options);\n },\n\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthData}\n */\n signUpOrlogInWithAuthData: function signUpOrlogInWithAuthData() {\n console.warn('DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替');\n return this.loginWithAuthData.apply(this, arguments);\n },\n\n\n /**\n * Signs up or logs in a user with a third party authData and unionId.\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example AV.User.loginWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) {\n return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions);\n },\n\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthDataAndUnionId}\n * @since 3.5.0\n */\n signUpOrlogInWithAuthDataAndUnionId: function signUpOrlogInWithAuthDataAndUnionId() {\n console.warn('DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替');\n return this.loginWithAuthDataAndUnionId.apply(this, arguments);\n },\n\n\n /**\n * Merge unionId into authInfo.\n * @since 4.6.0\n * @param {Object} authInfo\n * @param {String} unionId\n * @param {Object} [unionIdOption]\n * @param {Boolean} [unionIdOption.asMainAccount] If true, the unionId will be associated with the user.\n */\n mergeUnionId: function mergeUnionId(authInfo, unionId) {\n var _ref14 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref14$asMainAccount = _ref14.asMainAccount,\n asMainAccount = _ref14$asMainAccount === undefined ? false : _ref14$asMainAccount;\n\n authInfo = JSON.parse((0, _stringify2.default)(authInfo));\n var _authInfo = authInfo,\n authData = _authInfo.authData,\n platform = _authInfo.platform;\n\n authData.platform = platform;\n authData.main_account = asMainAccount;\n authData.unionid = unionId;\n return authInfo;\n },\n\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 2.0.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithWeapp: function loginWithWeapp() {\n var _this15 = this;\n\n var _ref15 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref15$preferUnionId = _ref15.preferUnionId,\n preferUnionId = _ref15$preferUnionId === undefined ? false : _ref15$preferUnionId,\n _ref15$unionIdPlatfor = _ref15.unionIdPlatform,\n unionIdPlatform = _ref15$unionIdPlatfor === undefined ? 'weixin' : _ref15$unionIdPlatfor,\n _ref15$asMainAccount = _ref15.asMainAccount,\n asMainAccount = _ref15$asMainAccount === undefined ? true : _ref15$asMainAccount,\n _ref15$failOnNotExist = _ref15.failOnNotExist,\n failOnNotExist = _ref15$failOnNotExist === undefined ? false : _ref15$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this15.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 3.13.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.<AV.User>}\n */\n loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) {\n var _this16 = this;\n\n var _ref16 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref16$unionIdPlatfor = _ref16.unionIdPlatform,\n unionIdPlatform = _ref16$unionIdPlatfor === undefined ? 'weixin' : _ref16$unionIdPlatfor,\n _ref16$asMainAccount = _ref16.asMainAccount,\n asMainAccount = _ref16$asMainAccount === undefined ? false : _ref16$asMainAccount,\n _ref16$failOnNotExist = _ref16.failOnNotExist,\n failOnNotExist = _ref16$failOnNotExist === undefined ? false : _ref16$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount: asMainAccount });\n return _this16.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithQQApp: function loginWithQQApp() {\n var _this17 = this;\n\n var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref17$preferUnionId = _ref17.preferUnionId,\n preferUnionId = _ref17$preferUnionId === undefined ? false : _ref17$preferUnionId,\n _ref17$unionIdPlatfor = _ref17.unionIdPlatform,\n unionIdPlatform = _ref17$unionIdPlatfor === undefined ? 'qq' : _ref17$unionIdPlatfor,\n _ref17$asMainAccount = _ref17.asMainAccount,\n asMainAccount = _ref17$asMainAccount === undefined ? true : _ref17$asMainAccount,\n _ref17$failOnNotExist = _ref17.failOnNotExist,\n failOnNotExist = _ref17$failOnNotExist === undefined ? false : _ref17$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this17.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise.<AV.User>}\n */\n loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) {\n var _this18 = this;\n\n var _ref18 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref18$unionIdPlatfor = _ref18.unionIdPlatform,\n unionIdPlatform = _ref18$unionIdPlatfor === undefined ? 'qq' : _ref18$unionIdPlatfor,\n _ref18$asMainAccount = _ref18.asMainAccount,\n asMainAccount = _ref18$asMainAccount === undefined ? false : _ref18$asMainAccount,\n _ref18$failOnNotExist = _ref18.failOnNotExist,\n failOnNotExist = _ref18$failOnNotExist === undefined ? false : _ref18$failOnNotExist;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount: asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return _this18.loginWithMiniApp(authInfo, { failOnNotExist: failOnNotExist });\n });\n },\n\n\n /**\n * Register or login using the identity of the current mini-app.\n * @param {Object} authInfo\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n */\n loginWithMiniApp: function loginWithMiniApp(authInfo, option) {\n var _this19 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this19.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n });\n }\n return this.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n },\n\n\n /**\n * Only use for DI in tests to produce deterministic IDs.\n */\n _genId: function _genId() {\n return uuid();\n },\n\n\n /**\n * Creates an anonymous user.\n *\n * @since 3.9.0\n * @return {Promise.<AV.User>}\n */\n loginAnonymously: function loginAnonymously() {\n return this.loginWithAuthData({\n id: AV.User._genId()\n }, 'anonymous');\n },\n associateWithAuthData: function associateWithAuthData(userObj, platform, authData) {\n console.warn('DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替');\n return userObj._linkWith(platform, authData);\n },\n\n /**\n * Logs out the currently logged in user session. This will remove the\n * session from disk, log out of linked services, and future calls to\n * <code>current</code> will return <code>null</code>.\n * @return {Promise}\n */\n logOut: function logOut() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return _promise2.default.resolve(null);\n }\n\n if (AV.User._currentUser !== null) {\n AV.User._currentUser._logOutWithAll();\n AV.User._currentUser._isCurrentUser = false;\n }\n AV.User._currentUserMatchesDisk = true;\n AV.User._currentUser = null;\n return AV.localStorage.removeItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function () {\n return AV._refreshSubscriptionId();\n });\n },\n\n /**\n *Create a follower query for special user to query the user's followers.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followerQuery: function followerQuery(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n var query = new AV.FriendShipQuery('_Follower');\n query._friendshipTag = 'follower';\n query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId));\n return query;\n },\n\n /**\n *Create a followee query for special user to query the user's followees.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followeeQuery: function followeeQuery(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n var query = new AV.FriendShipQuery('_Followee');\n query._friendshipTag = 'followee';\n query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId));\n return query;\n },\n\n /**\n * Requests a password reset email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * reset their password on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * forgot their password.\n * @return {Promise}\n */\n requestPasswordReset: function requestPasswordReset(email) {\n var json = { email: email };\n var request = AVRequest('requestPasswordReset', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * verify their email address on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * doesn't verify their email address.\n * @return {Promise}\n */\n requestEmailVerify: function requestEmailVerify(email) {\n var json = { email: email };\n var request = AVRequest('requestEmailVerify', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * verify their mobile phone number by calling AV.User.verifyMobilePhone\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestMobilePhoneVerify: function requestMobilePhoneVerify(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest('requestMobilePhoneVerify', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Requests a reset password sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * reset their account's password by calling AV.User.resetPasswordBySmsCode\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestPasswordResetBySmsCode: function requestPasswordResetBySmsCode(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest('requestPasswordResetBySmsCode', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber.\n * This sms code allows current user to reset it's mobilePhoneNumber by\n * calling {@link AV.User.changePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {Number} [ttl] ttl of sms code (default is 6 minutes)\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestChangePhoneNumber: function requestChangePhoneNumber(mobilePhoneNumber, ttl, options) {\n var data = { mobilePhoneNumber: mobilePhoneNumber };\n if (ttl) {\n data.ttl = options.ttl;\n }\n if (options && options.validateToken) {\n data.validate_token = options.validateToken;\n }\n return AVRequest('requestChangePhoneNumber', null, null, 'POST', data, options);\n },\n\n\n /**\n * Makes a call to reset user's account mobilePhoneNumber by sms code.\n * The sms code is sent by {@link AV.User.requestChangePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {String} code The sms code.\n * @return {Promise}\n */\n changePhoneNumber: function changePhoneNumber(mobilePhoneNumber, code) {\n var data = { mobilePhoneNumber: mobilePhoneNumber, code: code };\n return AVRequest('changePhoneNumber', null, null, 'POST', data);\n },\n\n\n /**\n * Makes a call to reset user's account password by sms code and new password.\n * The sms code is sent by AV.User.requestPasswordResetBySmsCode.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @param {String} password The new password.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n resetPasswordBySmsCode: function resetPasswordBySmsCode(code, password) {\n var json = { password: password };\n var request = AVRequest('resetPasswordBySmsCode', null, code, 'PUT', json);\n return request;\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode\n * If verify successfully,the user mobilePhoneVerified attribute will be true.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifyMobilePhone: function verifyMobilePhone(code) {\n var request = AVRequest('verifyMobilePhone', null, code, 'POST', null);\n return request;\n },\n\n /**\n * Requests a logIn sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * login by AV.User.logInWithMobilePhoneSmsCode function.\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that want to login by AV.User.logInWithMobilePhoneSmsCode\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestLoginSmsCode: function requestLoginSmsCode(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest('requestLoginSmsCode', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {Promise.<AV.User>} resolved with the currently logged in AV.User.\n */\n currentAsync: function currentAsync() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return _promise2.default.resolve(null);\n }\n\n if (AV.User._currentUser) {\n return _promise2.default.resolve(AV.User._currentUser);\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return _promise2.default.resolve(AV.User._currentUser);\n }\n\n return AV.localStorage.getItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function (userData) {\n if (!userData) {\n return null;\n }\n\n // Load the user from local storage.\n AV.User._currentUserMatchesDisk = true;\n\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n AV.User._currentUser._finishFetch(json);\n //AV.User._currentUser.set(json);\n\n AV.User._currentUser._synchronizeAllAuthData();\n AV.User._currentUser._refreshCache();\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n });\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {AV.User} The currently logged in AV.User.\n */\n current: function current() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return null;\n }\n\n if (AV.localStorage.async) {\n var error = new Error('Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.');\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n }\n\n if (AV.User._currentUser) {\n return AV.User._currentUser;\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return AV.User._currentUser;\n }\n\n // Load the user from local storage.\n AV.User._currentUserMatchesDisk = true;\n\n var userData = AV.localStorage.getItem(AV._getAVPath(AV.User._CURRENT_USER_KEY));\n if (!userData) {\n return null;\n }\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n AV.User._currentUser._finishFetch(json);\n //AV.User._currentUser.set(json);\n\n AV.User._currentUser._synchronizeAllAuthData();\n AV.User._currentUser._refreshCache();\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n },\n\n /**\n * Persists a user as currentUser to localStorage, and into the singleton.\n * @private\n */\n _saveCurrentUser: function _saveCurrentUser(user) {\n var promise;\n if (AV.User._currentUser !== user) {\n promise = AV.User.logOut();\n } else {\n promise = _promise2.default.resolve();\n }\n return promise.then(function () {\n user._isCurrentUser = true;\n AV.User._currentUser = user;\n\n var json = user._toFullJSON();\n json._id = user.id;\n json._sessionToken = user._sessionToken;\n return AV.localStorage.setItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY), (0, _stringify2.default)(json)).then(function () {\n AV.User._currentUserMatchesDisk = true;\n return AV._refreshSubscriptionId();\n });\n });\n },\n\n _registerAuthenticationProvider: function _registerAuthenticationProvider(provider) {\n AV.User._authProviders[provider.getAuthType()] = provider;\n // Synchronize the current user with the auth provider.\n if (!AV._config.disableCurrentUser && AV.User.current()) {\n AV.User.current()._synchronizeAuthData(provider.getAuthType());\n }\n },\n\n _logInWith: function _logInWith(provider, authData, options) {\n var user = AV.Object._create('_User');\n return user._linkWith(provider, authData, options);\n }\n });\n};\n\n/***/ }),\n/* 323 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(86);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n/***/ }),\n/* 324 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar debug = __webpack_require__(35)('leancloud:query');\nvar AVError = __webpack_require__(29);\n\nvar _require = __webpack_require__(12),\n _request = _require._request,\n request = _require.request;\n\nvar _require2 = __webpack_require__(15),\n ensureArray = _require2.ensureArray,\n transformFetchOptions = _require2.transformFetchOptions,\n continueWhile = _require2.continueWhile;\n\nvar requires = function requires(value, message) {\n if (value === undefined) {\n throw new Error(message);\n }\n};\n\n// AV.Query is a way to create a list of AV.Objects.\nmodule.exports = function (AV) {\n /**\n * Creates a new AV.Query for the given AV.Object subclass.\n * @param {Class|String} objectClass An instance of a subclass of AV.Object, or a AV className string.\n * @class\n *\n * <p>AV.Query defines a query that is used to fetch AV.Objects. The\n * most common use case is finding all objects that match a query through the\n * <code>find</code> method. For example, this sample code fetches all objects\n * of class <code>MyClass</code>. It calls a different function depending on\n * whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.find().then(function(results) {\n * // results is an array of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to retrieve a single object whose id is\n * known, through the get method. For example, this sample code fetches an\n * object of class <code>MyClass</code> and id <code>myId</code>. It calls a\n * different function depending on whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.get(myId).then(function(object) {\n * // object is an instance of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to count the number of objects that match\n * the query without retrieving all of those objects. For example, this\n * sample code counts the number of objects of the class <code>MyClass</code>\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.count().then(function(number) {\n * // There are number instances of MyClass.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n */\n AV.Query = function (objectClass) {\n if (_.isString(objectClass)) {\n objectClass = AV.Object._getSubclass(objectClass);\n }\n\n this.objectClass = objectClass;\n\n this.className = objectClass.prototype.className;\n\n this._where = {};\n this._include = [];\n this._select = [];\n this._limit = -1; // negative limit means, do not send a limit\n this._skip = 0;\n this._defaultParams = {};\n };\n\n /**\n * Constructs a AV.Query that is the OR of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.or(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an or of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to OR.\n * @return {AV.Query} The query that is the OR of the passed in queries.\n */\n AV.Query.or = function () {\n var queries = _.toArray(arguments);\n var className = null;\n AV._arrayEach(queries, function (q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n var query = new AV.Query(className);\n query._orQuery(queries);\n return query;\n };\n\n /**\n * Constructs a AV.Query that is the AND of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.and(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an 'and' of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to AND.\n * @return {AV.Query} The query that is the AND of the passed in queries.\n */\n AV.Query.and = function () {\n var queries = _.toArray(arguments);\n var className = null;\n AV._arrayEach(queries, function (q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n var query = new AV.Query(className);\n query._andQuery(queries);\n return query;\n };\n\n /**\n * Retrieves a list of AVObjects that satisfy the CQL.\n * CQL syntax please see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n *\n * @param {String} cql A CQL string, see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n * @param {Array} pvalues An array contains placeholder values.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n AV.Query.doCloudQuery = function (cql, pvalues, options) {\n var params = { cql: cql };\n if (_.isArray(pvalues)) {\n params.pvalues = pvalues;\n } else {\n options = pvalues;\n }\n\n var request = _request('cloudQuery', null, null, 'GET', params, options);\n return request.then(function (response) {\n //query to process results.\n var query = new AV.Query(response.className);\n var results = _.map(response.results, function (json) {\n var obj = query._newObject(response);\n if (obj._finishFetch) {\n obj._finishFetch(query._processResult(json), true);\n }\n return obj;\n });\n return {\n results: results,\n count: response.count,\n className: response.className\n };\n });\n };\n\n /**\n * Return a query with conditions from json.\n * This can be useful to send a query from server side to client side.\n * @since 4.0.0\n * @param {Object} json from {@link AV.Query#toJSON}\n * @return {AV.Query}\n */\n AV.Query.fromJSON = function (_ref) {\n var className = _ref.className,\n where = _ref.where,\n include = _ref.include,\n select = _ref.select,\n includeACL = _ref.includeACL,\n limit = _ref.limit,\n skip = _ref.skip,\n order = _ref.order;\n\n if (typeof className !== 'string') {\n throw new TypeError('Invalid Query JSON, className must be a String.');\n }\n var query = new AV.Query(className);\n _.extend(query, {\n _where: where,\n _include: include,\n _select: select,\n _includeACL: includeACL,\n _limit: limit,\n _skip: skip,\n _order: order\n });\n return query;\n };\n\n AV.Query._extend = AV._extend;\n\n _.extend(AV.Query.prototype,\n /** @lends AV.Query.prototype */{\n //hook to iterate result. Added by dennis<xzhuang@avoscloud.com>.\n _processResult: function _processResult(obj) {\n return obj;\n },\n\n /**\n * Constructs an AV.Object whose id is already known by fetching data from\n * the server.\n *\n * @param {String} objectId The id of the object to be fetched.\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object>}\n */\n get: function get(objectId, options) {\n if (!_.isString(objectId)) {\n throw new Error('objectId must be a string');\n }\n if (objectId === '') {\n return _promise2.default.reject(new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.'));\n }\n\n var obj = this._newObject();\n obj.id = objectId;\n\n var queryJSON = this._getParams();\n var fetchOptions = {};\n\n if (queryJSON.keys) fetchOptions.keys = queryJSON.keys;\n if (queryJSON.include) fetchOptions.include = queryJSON.include;\n if (queryJSON.includeACL) fetchOptions.includeACL = queryJSON.includeACL;\n\n return _request('classes', this.className, objectId, 'GET', transformFetchOptions(fetchOptions), options).then(function (response) {\n if (_.isEmpty(response)) throw new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n obj._finishFetch(obj.parse(response), true);\n return obj;\n });\n },\n\n /**\n * Returns a JSON representation of this query.\n * @return {Object}\n */\n toJSON: function toJSON() {\n var className = this.className,\n where = this._where,\n include = this._include,\n select = this._select,\n includeACL = this._includeACL,\n limit = this._limit,\n skip = this._skip,\n order = this._order;\n\n return {\n className: className,\n where: where,\n include: include,\n select: select,\n includeACL: includeACL,\n limit: limit,\n skip: skip,\n order: order\n };\n },\n\n\n _getParams: function _getParams() {\n var params = _.extend({}, this._defaultParams, {\n where: this._where\n });\n\n if (this._include.length > 0) {\n params.include = this._include.join(',');\n }\n if (this._select.length > 0) {\n params.keys = this._select.join(',');\n }\n if (this._includeACL !== undefined) {\n params.returnACL = this._includeACL;\n }\n if (this._limit >= 0) {\n params.limit = this._limit;\n }\n if (this._skip > 0) {\n params.skip = this._skip;\n }\n if (this._order !== undefined) {\n params.order = this._order;\n }\n\n return params;\n },\n\n _newObject: function _newObject(response) {\n var obj;\n if (response && response.className) {\n obj = new AV.Object(response.className);\n } else {\n obj = new this.objectClass();\n }\n return obj;\n },\n _createRequest: function _createRequest() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._getParams();\n var options = arguments[1];\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '/classes/' + this.className;\n\n if (encodeURIComponent((0, _stringify2.default)(params)).length > 2000) {\n var body = {\n requests: [{\n method: 'GET',\n path: '/1.1' + path,\n params: params\n }]\n };\n return request({\n path: '/batch',\n method: 'POST',\n data: body,\n authOptions: options\n }).then(function (response) {\n var result = response[0];\n if (result.success) {\n return result.success;\n }\n var error = new Error(result.error.error || 'Unknown batch error');\n error.code = result.error.code;\n throw error;\n });\n }\n return request({\n method: 'GET',\n path: path,\n query: params,\n authOptions: options\n });\n },\n _parseResponse: function _parseResponse(response) {\n var _this = this;\n\n return _.map(response.results, function (json) {\n var obj = _this._newObject(response);\n if (obj._finishFetch) {\n obj._finishFetch(_this._processResult(json), true);\n }\n return obj;\n });\n },\n\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find: function find(options) {\n var request = this._createRequest(undefined, options);\n return request.then(this._parseResponse.bind(this));\n },\n\n\n /**\n * Retrieves both AVObjects and total count.\n *\n * @since 4.12.0\n * @param {AuthOptions} options\n * @return {Promise} A tuple contains results and count.\n */\n findAndCount: function findAndCount(options) {\n var _this2 = this;\n\n var params = this._getParams();\n params.count = 1;\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return [_this2._parseResponse(response), response.count];\n });\n },\n\n\n /**\n * scan a Query. masterKey required.\n *\n * @since 2.1.0\n * @param {object} [options]\n * @param {string} [options.orderedBy] specify the key to sort\n * @param {number} [options.batchSize] specify the batch size for each request\n * @param {AuthOptions} [authOptions]\n * @return {AsyncIterator.<AV.Object>}\n * @example const testIterator = {\n * [Symbol.asyncIterator]() {\n * return new Query('Test').scan(undefined, { useMasterKey: true });\n * },\n * };\n * for await (const test of testIterator) {\n * console.log(test.id);\n * }\n */\n scan: function scan() {\n var _this3 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n orderedBy = _ref2.orderedBy,\n batchSize = _ref2.batchSize;\n\n var authOptions = arguments[1];\n\n var condition = this._getParams();\n debug('scan %O', condition);\n if (condition.order) {\n console.warn('The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan.');\n delete condition.order;\n }\n if (condition.skip) {\n console.warn('The skip option of the query is ignored for Query#scan.');\n delete condition.skip;\n }\n if (condition.limit) {\n console.warn('The limit option of the query is ignored for Query#scan.');\n delete condition.limit;\n }\n if (orderedBy) condition.scan_key = orderedBy;\n if (batchSize) condition.limit = batchSize;\n var promise = _promise2.default.resolve([]);\n var cursor = void 0;\n var endReached = false;\n return {\n next: function next() {\n promise = promise.then(function (remainResults) {\n if (endReached) return [];\n if (remainResults.length > 1) return remainResults;\n // no cursor means we have reached the end\n // except for the first time\n if (!cursor && remainResults.length !== 0) {\n endReached = true;\n return remainResults;\n }\n // when only 1 item left in queue\n // start the next request to see if it is the last one\n return _request('scan/classes', _this3.className, null, 'GET', cursor ? _.extend({}, condition, { cursor: cursor }) : condition, authOptions).then(function (response) {\n cursor = response.cursor;\n return _this3._parseResponse(response);\n }).then(function (results) {\n if (!results.length) endReached = true;\n return remainResults.concat(results);\n });\n });\n return promise.then(function (remainResults) {\n return remainResults.shift();\n }).then(function (result) {\n return {\n value: result,\n done: result === undefined\n };\n });\n }\n };\n },\n\n\n /**\n * Delete objects retrieved by this query.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n destroyAll: function destroyAll(options) {\n var self = this;\n return self.find(options).then(function (objects) {\n return AV.Object.destroyAll(objects, options);\n });\n },\n\n /**\n * Counts the number of objects that match this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the count when\n * the query completes.\n */\n count: function count(options) {\n var params = this._getParams();\n params.limit = 0;\n params.count = 1;\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return response.count;\n });\n },\n\n /**\n * Retrieves at most one AV.Object that satisfies this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the object when\n * the query completes.\n */\n first: function first(options) {\n var self = this;\n\n var params = this._getParams();\n params.limit = 1;\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return _.map(response.results, function (json) {\n var obj = self._newObject();\n if (obj._finishFetch) {\n obj._finishFetch(self._processResult(json), true);\n }\n return obj;\n })[0];\n });\n },\n\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function skip(n) {\n requires(n, 'undefined is not a valid skip value');\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function limit(n) {\n requires(n, 'undefined is not a valid limit value');\n this._limit = n;\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that the AV.Object must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n equalTo: function equalTo(key, value) {\n requires(key, 'undefined is not a valid key');\n requires(value, 'undefined is not a valid value');\n this._where[key] = AV._encode(value);\n return this;\n },\n\n /**\n * Helper for condition queries\n * @private\n */\n _addCondition: function _addCondition(key, condition, value) {\n requires(key, 'undefined is not a valid condition key');\n requires(condition, 'undefined is not a valid condition');\n requires(value, 'undefined is not a valid condition value');\n\n // Check if we already have a condition\n if (!this._where[key]) {\n this._where[key] = {};\n }\n this._where[key][condition] = AV._encode(value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular\n * <strong>array</strong> key's length to be equal to the provided value.\n * @param {String} key The array key to check.\n * @param value The length value.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n sizeEqualTo: function sizeEqualTo(key, value) {\n this._addCondition(key, '$size', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be not equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that must not be equalled.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notEqualTo: function notEqualTo(key, value) {\n this._addCondition(key, '$ne', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThan: function lessThan(key, value) {\n this._addCondition(key, '$lt', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThan: function greaterThan(key, value) {\n this._addCondition(key, '$gt', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThanOrEqualTo: function lessThanOrEqualTo(key, value) {\n this._addCondition(key, '$lte', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThanOrEqualTo: function greaterThanOrEqualTo(key, value) {\n this._addCondition(key, '$gte', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containedIn: function containedIn(key, values) {\n this._addCondition(key, '$in', values);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notContainedIn: function notContainedIn(key, values) {\n this._addCondition(key, '$nin', values);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n * @param {String} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containsAll: function containsAll(key, values) {\n this._addCondition(key, '$all', values);\n return this;\n },\n\n /**\n * Add a constraint for finding objects that contain the given key.\n * @param {String} key The key that should exist.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n exists: function exists(key) {\n this._addCondition(key, '$exists', true);\n return this;\n },\n\n /**\n * Add a constraint for finding objects that do not contain a given key.\n * @param {String} key The key that should not exist\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotExist: function doesNotExist(key) {\n this._addCondition(key, '$exists', false);\n return this;\n },\n\n /**\n * Add a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matches: function matches(key, regex, modifiers) {\n this._addCondition(key, '$regex', regex);\n if (!modifiers) {\n modifiers = '';\n }\n // Javascript regex options support mig as inline options but store them\n // as properties of the object. We support mi & should migrate them to\n // modifiers\n if (regex.ignoreCase) {\n modifiers += 'i';\n }\n if (regex.multiline) {\n modifiers += 'm';\n }\n\n if (modifiers && modifiers.length) {\n this._addCondition(key, '$options', modifiers);\n }\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a AV.Query\n * constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesQuery: function matchesQuery(key, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$inQuery', queryJSON);\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not matches a\n * AV.Query constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchQuery: function doesNotMatchQuery(key, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$notInQuery', queryJSON);\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * matched.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesKeyInQuery: function matchesKeyInQuery(key, queryKey, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$select', { key: queryKey, query: queryJSON });\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not match a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * excluded.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchKeyInQuery: function doesNotMatchKeyInQuery(key, queryKey, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$dontSelect', {\n key: queryKey,\n query: queryJSON\n });\n return this;\n },\n\n /**\n * Add constraint that at least one of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _orQuery: function _orQuery(queries) {\n var queryJSON = _.map(queries, function (q) {\n return q._getParams().where;\n });\n\n this._where.$or = queryJSON;\n return this;\n },\n\n /**\n * Add constraint that both of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _andQuery: function _andQuery(queries) {\n var queryJSON = _.map(queries, function (q) {\n return q._getParams().where;\n });\n\n this._where.$and = queryJSON;\n return this;\n },\n\n /**\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape \\E's in\n * the text separately.\n * @private\n */\n _quote: function _quote(s) {\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E';\n },\n\n /**\n * Add a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} substring The substring that the value must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n contains: function contains(key, value) {\n this._addCondition(key, '$regex', this._quote(value));\n return this;\n },\n\n /**\n * Add a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} prefix The substring that the value must start with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n startsWith: function startsWith(key, value) {\n this._addCondition(key, '$regex', '^' + this._quote(value));\n return this;\n },\n\n /**\n * Add a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} suffix The substring that the value must end with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n endsWith: function endsWith(key, value) {\n this._addCondition(key, '$regex', this._quote(value) + '$');\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n ascending: function ascending(key) {\n requires(key, 'undefined is not a valid key');\n this._order = key;\n return this;\n },\n\n /**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addAscending: function addAscending(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',' + key;else this._order = key;\n return this;\n },\n\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n descending: function descending(key) {\n requires(key, 'undefined is not a valid key');\n this._order = '-' + key;\n return this;\n },\n\n /**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addDescending: function addDescending(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',-' + key;else this._order = '-' + key;\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n near: function near(key, point) {\n if (!(point instanceof AV.GeoPoint)) {\n // Try to cast it to a GeoPoint, so that near(\"loc\", [20,30]) works.\n point = new AV.GeoPoint(point);\n }\n this._addCondition(key, '$nearSphere', point);\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param maxDistance Maximum distance (in radians) of results to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinRadians: function withinRadians(key, point, distance) {\n this.near(key, point);\n this._addCondition(key, '$maxDistance', distance);\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 3958.8 miles.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in miles) of results to\n * return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinMiles: function withinMiles(key, point, distance) {\n return this.withinRadians(key, point, distance / 3958.8);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 6371.0 kilometers.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in kilometers) of results\n * to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinKilometers: function withinKilometers(key, point, distance) {\n return this.withinRadians(key, point, distance / 6371.0);\n },\n\n /**\n * Add a constraint to the query that requires a particular key's\n * coordinates be contained within a given rectangular geographic bounding\n * box.\n * @param {String} key The key to be constrained.\n * @param {AV.GeoPoint} southwest\n * The lower-left inclusive corner of the box.\n * @param {AV.GeoPoint} northeast\n * The upper-right inclusive corner of the box.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinGeoBox: function withinGeoBox(key, southwest, northeast) {\n if (!(southwest instanceof AV.GeoPoint)) {\n southwest = new AV.GeoPoint(southwest);\n }\n if (!(northeast instanceof AV.GeoPoint)) {\n northeast = new AV.GeoPoint(northeast);\n }\n this._addCondition(key, '$within', { $box: [southwest, northeast] });\n return this;\n },\n\n /**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @param {String[]} keys The name of the key to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n include: function include(keys) {\n var _this4 = this;\n\n requires(keys, 'undefined is not a valid key');\n _.forEach(arguments, function (keys) {\n _this4._include = _this4._include.concat(ensureArray(keys));\n });\n return this;\n },\n\n /**\n * Include the ACL.\n * @param {Boolean} [value=true] Whether to include the ACL\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n includeACL: function includeACL() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this._includeACL = value;\n return this;\n },\n\n /**\n * Restrict the fields of the returned AV.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n * @param {String[]} keys The names of the keys to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n select: function select(keys) {\n var _this5 = this;\n\n requires(keys, 'undefined is not a valid key');\n _.forEach(arguments, function (keys) {\n _this5._select = _this5._select.concat(ensureArray(keys));\n });\n return this;\n },\n\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n * @param callback {Function} Callback that will be called with each result\n * of the query.\n * @return {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n each: function each(callback) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this._order || this._skip || this._limit >= 0) {\n var error = new Error('Cannot iterate on a query with sort, skip, or limit.');\n return _promise2.default.reject(error);\n }\n\n var query = new AV.Query(this.objectClass);\n // We can override the batch size from the options.\n // This is undocumented, but useful for testing.\n query._limit = options.batchSize || 100;\n query._where = _.clone(this._where);\n query._include = _.clone(this._include);\n\n query.ascending('objectId');\n\n var finished = false;\n return continueWhile(function () {\n return !finished;\n }, function () {\n return query.find(options).then(function (results) {\n var callbacksDone = _promise2.default.resolve();\n _.each(results, function (result) {\n callbacksDone = callbacksDone.then(function () {\n return callback(result);\n });\n });\n\n return callbacksDone.then(function () {\n if (results.length >= query._limit) {\n query.greaterThan('objectId', results[results.length - 1].id);\n } else {\n finished = true;\n }\n });\n });\n });\n },\n\n /**\n * Subscribe the changes of this query.\n *\n * LiveQuery is not included in the default bundle: {@link https://url.leanapp.cn/enable-live-query}.\n *\n * @since 3.0.0\n * @return {AV.LiveQuery} An eventemitter which can be used to get LiveQuery updates;\n */\n subscribe: function subscribe(options) {\n return AV.LiveQuery.init(this, options);\n }\n });\n\n AV.FriendShipQuery = AV.Query._extend({\n _newObject: function _newObject() {\n var UserClass = AV.Object._getSubclass('_User');\n return new UserClass();\n },\n _processResult: function _processResult(json) {\n if (json && json[this._friendshipTag]) {\n var user = json[this._friendshipTag];\n if (user.__type === 'Pointer' && user.className === '_User') {\n delete user.__type;\n delete user.className;\n }\n return user;\n } else {\n return null;\n }\n }\n });\n};\n\n/***/ }),\n/* 325 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar EventEmitter = __webpack_require__(157);\n\nvar _require = __webpack_require__(15),\n inherits = _require.inherits;\n\nvar _require2 = __webpack_require__(12),\n request = _require2.request;\n\nvar subscribe = function subscribe(queryJSON, subscriptionId) {\n return request({\n method: 'POST',\n path: '/LiveQuery/subscribe',\n data: {\n query: queryJSON,\n id: subscriptionId\n }\n });\n};\n\nmodule.exports = function (AV) {\n var requireRealtime = function requireRealtime() {\n if (!AV._config.realtime) {\n throw new Error('LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query');\n }\n };\n /**\n * @class\n * A LiveQuery, created by {@link AV.Query#subscribe} is an EventEmitter notifies changes of the Query.\n * @since 3.0.0\n */\n AV.LiveQuery = inherits(EventEmitter,\n /** @lends AV.LiveQuery.prototype */{\n constructor: function constructor(id, client, queryJSON, subscriptionId) {\n var _this = this;\n\n EventEmitter.apply(this);\n this.id = id;\n this._client = client;\n this._client.register(this);\n this._queryJSON = queryJSON;\n this._subscriptionId = subscriptionId;\n this._onMessage = this._dispatch.bind(this);\n this._onReconnect = function () {\n subscribe(_this._queryJSON, _this._subscriptionId).catch(function (error) {\n return console.error('LiveQuery resubscribe error: ' + error.message);\n });\n };\n client.on('message', this._onMessage);\n client.on('reconnect', this._onReconnect);\n },\n _dispatch: function _dispatch(message) {\n var _this2 = this;\n\n message.forEach(function (_ref) {\n var op = _ref.op,\n object = _ref.object,\n queryId = _ref.query_id,\n updatedKeys = _ref.updatedKeys;\n\n if (queryId !== _this2.id) return;\n var target = AV.parseJSON(_.extend({\n __type: object.className === '_File' ? 'File' : 'Object'\n }, object));\n if (updatedKeys) {\n /**\n * An existing AV.Object which fulfills the Query you subscribe is updated.\n * @event AV.LiveQuery#update\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n /**\n * An existing AV.Object which doesn't fulfill the Query is updated and now it fulfills the Query.\n * @event AV.LiveQuery#enter\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n /**\n * An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query.\n * @event AV.LiveQuery#leave\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n _this2.emit(op, target, updatedKeys);\n } else {\n /**\n * A new AV.Object which fulfills the Query you subscribe is created.\n * @event AV.LiveQuery#create\n * @param {AV.Object|AV.File} target updated object\n */\n /**\n * An existing AV.Object which fulfills the Query you subscribe is deleted.\n * @event AV.LiveQuery#delete\n * @param {AV.Object|AV.File} target updated object\n */\n _this2.emit(op, target);\n }\n });\n },\n\n /**\n * unsubscribe the query\n *\n * @return {Promise}\n */\n unsubscribe: function unsubscribe() {\n var client = this._client;\n client.off('message', this._onMessage);\n client.off('reconnect', this._onReconnect);\n client.deregister(this);\n return request({\n method: 'POST',\n path: '/LiveQuery/unsubscribe',\n data: {\n id: client.id,\n query_id: this.id\n }\n });\n }\n },\n /** @lends AV.LiveQuery */\n {\n init: function init(query) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$subscriptionId = _ref2.subscriptionId,\n userDefinedSubscriptionId = _ref2$subscriptionId === undefined ? AV._getSubscriptionId() : _ref2$subscriptionId;\n\n requireRealtime();\n if (!(query instanceof AV.Query)) throw new TypeError('LiveQuery must be inited with a Query');\n return _promise2.default.resolve(userDefinedSubscriptionId).then(function (subscriptionId) {\n return AV._config.realtime.createLiveQueryClient(subscriptionId).then(function (liveQueryClient) {\n var _query$_getParams = query._getParams(),\n where = _query$_getParams.where,\n keys = _query$_getParams.keys,\n returnACL = _query$_getParams.returnACL;\n\n var queryJSON = {\n where: where,\n keys: keys,\n returnACL: returnACL,\n className: query.className\n };\n var promise = subscribe(queryJSON, subscriptionId).then(function (_ref3) {\n var queryId = _ref3.query_id;\n return new AV.LiveQuery(queryId, liveQueryClient, queryJSON, subscriptionId);\n }).finally(function () {\n liveQueryClient.deregister(promise);\n });\n liveQueryClient.register(promise);\n return promise;\n });\n });\n },\n\n /**\n * Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background.\n * @static\n * @return void\n */\n pause: function pause() {\n requireRealtime();\n return AV._config.realtime.pause();\n },\n\n /**\n * Resume the LiveQuery connection. All subscriptions will be restored after reconnection.\n * @static\n * @return void\n */\n resume: function resume() {\n requireRealtime();\n return AV._config.realtime.resume();\n }\n });\n};\n\n/***/ }),\n/* 326 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\n\nvar _require = __webpack_require__(15),\n tap = _require.tap;\n\nmodule.exports = function (AV) {\n /**\n * @class\n * @example\n * AV.Captcha.request().then(captcha => {\n * captcha.bind({\n * textInput: 'code', // the id for textInput\n * image: 'captcha',\n * verifyButton: 'verify',\n * }, {\n * success: (validateCode) => {}, // next step\n * error: (error) => {}, // present error.message to user\n * });\n * });\n */\n AV.Captcha = function Captcha(options, authOptions) {\n this._options = options;\n this._authOptions = authOptions;\n /**\n * The image url of the captcha\n * @type string\n */\n this.url = undefined;\n /**\n * The captchaToken of the captcha.\n * @type string\n */\n this.captchaToken = undefined;\n /**\n * The validateToken of the captcha.\n * @type string\n */\n this.validateToken = undefined;\n };\n\n /**\n * Refresh the captcha\n * @return {Promise.<string>} a new capcha url\n */\n AV.Captcha.prototype.refresh = function refresh() {\n var _this = this;\n\n return AV.Cloud._requestCaptcha(this._options, this._authOptions).then(function (_ref) {\n var captchaToken = _ref.captchaToken,\n url = _ref.url;\n\n _.extend(_this, { captchaToken: captchaToken, url: url });\n return url;\n });\n };\n\n /**\n * Verify the captcha\n * @param {String} code The code from user input\n * @return {Promise.<string>} validateToken if the code is valid\n */\n AV.Captcha.prototype.verify = function verify(code) {\n var _this2 = this;\n\n return AV.Cloud.verifyCaptcha(code, this.captchaToken).then(tap(function (validateToken) {\n return _this2.validateToken = validateToken;\n }));\n };\n\n if (undefined === 'Browser') {\n /**\n * Bind the captcha to HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n * @param [elements]\n * @param {String|HTMLInputElement} [elements.textInput] An input element typed text, or the id for the element.\n * @param {String|HTMLImageElement} [elements.image] An image element, or the id for the element.\n * @param {String|HTMLElement} [elements.verifyButton] A button element, or the id for the element.\n * @param [callbacks]\n * @param {Function} [callbacks.success] Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request.\n * @param {Function} [callbacks.error] Error callback will be called if something goes wrong, detailed in param `error.message`.\n */\n AV.Captcha.prototype.bind = function bind(_ref2, _ref3) {\n var _this3 = this;\n\n var textInput = _ref2.textInput,\n image = _ref2.image,\n verifyButton = _ref2.verifyButton;\n var success = _ref3.success,\n error = _ref3.error;\n\n if (typeof textInput === 'string') {\n textInput = document.getElementById(textInput);\n if (!textInput) throw new Error('textInput with id ' + textInput + ' not found');\n }\n if (typeof image === 'string') {\n image = document.getElementById(image);\n if (!image) throw new Error('image with id ' + image + ' not found');\n }\n if (typeof verifyButton === 'string') {\n verifyButton = document.getElementById(verifyButton);\n if (!verifyButton) throw new Error('verifyButton with id ' + verifyButton + ' not found');\n }\n\n this.__refresh = function () {\n return _this3.refresh().then(function (url) {\n image.src = url;\n if (textInput) {\n textInput.value = '';\n textInput.focus();\n }\n }).catch(function (err) {\n return console.warn('refresh captcha fail: ' + err.message);\n });\n };\n if (image) {\n this.__image = image;\n image.src = this.url;\n image.addEventListener('click', this.__refresh);\n }\n\n this.__verify = function () {\n var code = textInput.value;\n _this3.verify(code).catch(function (err) {\n _this3.__refresh();\n throw err;\n }).then(success, error).catch(function (err) {\n return console.warn('verify captcha fail: ' + err.message);\n });\n };\n if (textInput && verifyButton) {\n this.__verifyButton = verifyButton;\n verifyButton.addEventListener('click', this.__verify);\n }\n };\n\n /**\n * unbind the captcha from HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n */\n AV.Captcha.prototype.unbind = function unbind() {\n if (this.__image) this.__image.removeEventListener('click', this.__refresh);\n if (this.__verifyButton) this.__verifyButton.removeEventListener('click', this.__verify);\n };\n }\n\n /**\n * Request a captcha\n * @param [options]\n * @param {Number} [options.width] width(px) of the captcha, ranged 60-200\n * @param {Number} [options.height] height(px) of the captcha, ranged 30-100\n * @param {Number} [options.size=4] length of the captcha, ranged 3-6. MasterKey required.\n * @param {Number} [options.ttl=60] time to live(s), ranged 10-180. MasterKey required.\n * @return {Promise.<AV.Captcha>}\n */\n AV.Captcha.request = function (options, authOptions) {\n var captcha = new AV.Captcha(options, authOptions);\n return captcha.refresh().then(function () {\n return captcha;\n });\n };\n};\n\n/***/ }),\n/* 327 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\n\nvar _require = __webpack_require__(12),\n _request = _require._request,\n request = _require.request;\n\nmodule.exports = function (AV) {\n /**\n * Contains functions for calling and declaring\n * <p><strong><em>\n * Some functions are only available from Cloud Code.\n * </em></strong></p>\n *\n * @namespace\n * @borrows AV.Captcha.request as requestCaptcha\n */\n AV.Cloud = AV.Cloud || {};\n\n _.extend(AV.Cloud,\n /** @lends AV.Cloud */{\n /**\n * Makes a call to a cloud function.\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n run: function run(name, data, options) {\n return request({\n service: 'engine',\n method: 'POST',\n path: '/functions/' + name,\n data: AV._encode(data, null, true),\n authOptions: options\n }).then(function (resp) {\n return AV._decode(resp).result;\n });\n },\n\n\n /**\n * Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response\n * from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object}\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result of the function.\n */\n rpc: function rpc(name, data, options) {\n if (_.isArray(data)) {\n return _promise2.default.reject(new Error(\"Can't pass Array as the param of rpc function in JavaScript SDK.\"));\n }\n\n return request({\n service: 'engine',\n method: 'POST',\n path: '/call/' + name,\n data: AV._encodeObjectOrArray(data),\n authOptions: options\n }).then(function (resp) {\n return AV._decode(resp).result;\n });\n },\n\n\n /**\n * Make a call to request server date time.\n * @return {Promise.<Date>} A promise that will be resolved with the result\n * of the function.\n * @since 0.5.9\n */\n getServerDate: function getServerDate() {\n return _request('date', null, null, 'GET').then(function (resp) {\n return AV._decode(resp);\n });\n },\n\n\n /**\n * Makes a call to request an sms code for operation verification.\n * @param {String|Object} data The mobile phone number string or a JSON\n * object that contains mobilePhoneNumber,template,sign,op,ttl,name etc.\n * @param {String} data.mobilePhoneNumber\n * @param {String} [data.template] sms template name\n * @param {String} [data.sign] sms signature name\n * @param {String} [data.smsType] sending code by `sms` (default) or `voice` call\n * @param {SMSAuthOptions} [options]\n * @return {Promise} A promise that will be resolved if the request succeed\n */\n requestSmsCode: function requestSmsCode(data) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (_.isString(data)) {\n data = { mobilePhoneNumber: data };\n }\n if (!data.mobilePhoneNumber) {\n throw new Error('Missing mobilePhoneNumber.');\n }\n if (options.validateToken) {\n data = _.extend({}, data, {\n validate_token: options.validateToken\n });\n }\n return _request('requestSmsCode', null, null, 'POST', data, options);\n },\n\n\n /**\n * Makes a call to verify sms code that sent by AV.Cloud.requestSmsCode\n * @param {String} code The sms code sent by AV.Cloud.requestSmsCode\n * @param {phone} phone The mobile phoner number.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifySmsCode: function verifySmsCode(code, phone) {\n if (!code) throw new Error('Missing sms code.');\n var params = {};\n if (_.isString(phone)) {\n params['mobilePhoneNumber'] = phone;\n }\n\n return _request('verifySmsCode', code, null, 'POST', params);\n },\n _requestCaptcha: function _requestCaptcha(options, authOptions) {\n return _request('requestCaptcha', null, null, 'GET', options, authOptions).then(function (_ref) {\n var url = _ref.captcha_url,\n captchaToken = _ref.captcha_token;\n return {\n captchaToken: captchaToken,\n url: url\n };\n });\n },\n\n\n /**\n * Request a captcha.\n */\n requestCaptcha: AV.Captcha.request,\n\n /**\n * Verify captcha code. This is the low-level API for captcha.\n * Checkout {@link AV.Captcha} for high abstract APIs.\n * @param {String} code the code from user input\n * @param {String} captchaToken captchaToken returned by {@link AV.Cloud.requestCaptcha}\n * @return {Promise.<String>} validateToken if the code is valid\n */\n verifyCaptcha: function verifyCaptcha(code, captchaToken) {\n return _request('verifyCaptcha', null, null, 'POST', {\n captcha_code: code,\n captcha_token: captchaToken\n }).then(function (_ref2) {\n var validateToken = _ref2.validate_token;\n return validateToken;\n });\n }\n });\n};\n\n/***/ }),\n/* 328 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar request = __webpack_require__(12).request;\n\nmodule.exports = function (AV) {\n AV.Installation = AV.Object.extend('_Installation');\n\n /**\n * @namespace\n */\n AV.Push = AV.Push || {};\n\n /**\n * Sends a push notification.\n * @param {Object} data The data of the push notification.\n * @param {String[]} [data.channels] An Array of channels to push to.\n * @param {Date} [data.push_time] A Date object for when to send the push.\n * @param {Date} [data.expiration_time] A Date object for when to expire\n * the push.\n * @param {Number} [data.expiration_interval] The seconds from now to expire the push.\n * @param {Number} [data.flow_control] The clients to notify per second\n * @param {AV.Query} [data.where] An AV.Query over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {String} [data.cql] A CQL statement over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {Object} data.data The data to send as part of the push.\n More details: https://url.leanapp.cn/pushData\n * @param {AuthOptions} [options]\n * @return {Promise}\n */\n AV.Push.send = function (data, options) {\n if (data.where) {\n data.where = data.where._getParams().where;\n }\n\n if (data.where && data.cql) {\n throw new Error(\"Both where and cql can't be set\");\n }\n\n if (data.push_time) {\n data.push_time = data.push_time.toJSON();\n }\n\n if (data.expiration_time) {\n data.expiration_time = data.expiration_time.toJSON();\n }\n\n if (data.expiration_time && data.expiration_interval) {\n throw new Error(\"Both expiration_time and expiration_interval can't be set\");\n }\n\n return request({\n service: 'push',\n method: 'POST',\n path: '/push',\n data: data,\n authOptions: options\n });\n };\n};\n\n/***/ }),\n/* 329 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _typeof2 = __webpack_require__(59);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar AVRequest = __webpack_require__(12)._request;\n\nvar _require = __webpack_require__(15),\n getSessionToken = _require.getSessionToken;\n\nmodule.exports = function (AV) {\n var getUser = function getUser() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var sessionToken = getSessionToken(options);\n if (sessionToken) {\n return AV.User._fetchUserBySessionToken(getSessionToken(options));\n }\n return AV.User.currentAsync();\n };\n\n var getUserPointer = function getUserPointer(options) {\n return getUser(options).then(function (currUser) {\n return AV.Object.createWithoutData('_User', currUser.id)._toPointer();\n });\n };\n\n /**\n * Contains functions to deal with Status in LeanCloud.\n * @class\n */\n AV.Status = function (imageUrl, message) {\n this.data = {};\n this.inboxType = 'default';\n this.query = null;\n if (imageUrl && (typeof imageUrl === 'undefined' ? 'undefined' : (0, _typeof3.default)(imageUrl)) === 'object') {\n this.data = imageUrl;\n } else {\n if (imageUrl) {\n this.data.image = imageUrl;\n }\n if (message) {\n this.data.message = message;\n }\n }\n return this;\n };\n\n _.extend(AV.Status.prototype,\n /** @lends AV.Status.prototype */{\n /**\n * Gets the value of an attribute in status data.\n * @param {String} attr The string name of an attribute.\n */\n get: function get(attr) {\n return this.data[attr];\n },\n /**\n * Sets a hash of model attributes on the status data.\n * @param {String} key The key to set.\n * @param {} value The value to give it.\n */\n set: function set(key, value) {\n this.data[key] = value;\n return this;\n },\n /**\n * Destroy this status,then it will not be avaiable in other user's inboxes.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n if (!this.id) return _promise2.default.reject(new Error('The status id is not exists.'));\n var request = AVRequest('statuses', null, this.id, 'DELETE', options);\n return request;\n },\n /**\n * Cast the AV.Status object to an AV.Object pointer.\n * @return {AV.Object} A AV.Object pointer.\n */\n toObject: function toObject() {\n if (!this.id) return null;\n return AV.Object.createWithoutData('_Status', this.id);\n },\n _getDataJSON: function _getDataJSON() {\n var json = _.clone(this.data);\n return AV._encode(json);\n },\n /**\n * Send a status by a AV.Query object.\n * @since 0.3.0\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a status to male users\n * var status = new AVStatus('image url', 'a message');\n * status.query = new AV.Query('_User');\n * status.query.equalTo('gender', 'male');\n * status.send().then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n send: function send() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n if (!this.query) {\n return AV.Status.sendStatusToFollowers(this, options);\n }\n\n return getUserPointer(options).then(function (currUser) {\n var query = _this.query._getParams();\n query.className = _this.query.className;\n var data = {};\n data.query = query;\n _this.data = _this.data || {};\n _this.data.source = _this.data.source || currUser;\n data.data = _this._getDataJSON();\n data.inboxType = _this.inboxType || 'default';\n\n return AVRequest('statuses', null, null, 'POST', data, options);\n }).then(function (response) {\n _this.id = response.objectId;\n _this.createdAt = AV._parseDate(response.createdAt);\n return _this;\n });\n },\n\n _finishFetch: function _finishFetch(serverData) {\n this.id = serverData.objectId;\n this.createdAt = AV._parseDate(serverData.createdAt);\n this.updatedAt = AV._parseDate(serverData.updatedAt);\n this.messageId = serverData.messageId;\n delete serverData.messageId;\n delete serverData.objectId;\n delete serverData.createdAt;\n delete serverData.updatedAt;\n this.data = AV._decode(serverData);\n }\n });\n\n /**\n * Send a status to current signined user's followers.\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendStatusToFollowers(status).then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n AV.Status.sendStatusToFollowers = function (status) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n return getUserPointer(options).then(function (currUser) {\n var query = {};\n query.className = '_Follower';\n query.keys = 'follower';\n query.where = { user: currUser };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = status.inboxType || 'default';\n\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function (response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n\n /**\n * <p>Send a status from current signined user to other user's private status inbox.</p>\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {String} target The target user or user's objectId.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a private status to user '52e84e47e4b0f8de283b079b'\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendPrivateStatus(status, '52e84e47e4b0f8de283b079b').then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n AV.Status.sendPrivateStatus = function (status, target) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n if (!target) {\n throw new Error('Invalid target user.');\n }\n var userObjectId = _.isString(target) ? target : target.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n return getUserPointer(options).then(function (currUser) {\n var query = {};\n query.className = '_User';\n query.where = { objectId: userObjectId };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = 'private';\n status.inboxType = 'private';\n\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function (response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n\n /**\n * Count unread statuses in someone's inbox.\n * @since 0.3.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the count\n * completes.\n * @example\n * AV.Status.countUnreadStatuses(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n AV.Status.countUnreadStatuses = function (owner) {\n var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!_.isString(inboxType)) options = inboxType;\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n return _promise2.default.resolve(owner || getUser(options)).then(function (owner) {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest('subscribe/statuses/count', null, null, 'GET', params, options);\n });\n };\n\n /**\n * reset unread statuses count in someone's inbox.\n * @since 2.1.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the reset\n * completes.\n * @example\n * AV.Status.resetUnreadCount(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n AV.Status.resetUnreadCount = function (owner) {\n var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!_.isString(inboxType)) options = inboxType;\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n return _promise2.default.resolve(owner || getUser(options)).then(function (owner) {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest('subscribe/statuses/resetUnreadCount', null, null, 'POST', params, options);\n });\n };\n\n /**\n * Create a status query to find someone's published statuses.\n * @since 0.3.0\n * @param {AV.User} source The status source, typically the publisher.\n * @return {AV.Query} The query object for status.\n * @example\n * //Find current user's published statuses.\n * var query = AV.Status.statusQuery(AV.User.current());\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n AV.Status.statusQuery = function (source) {\n var query = new AV.Query('_Status');\n if (source) {\n query.equalTo('source', source);\n }\n return query;\n };\n\n /**\n * <p>AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.</p>\n * @class\n */\n AV.InboxQuery = AV.Query._extend(\n /** @lends AV.InboxQuery.prototype */{\n _objectClass: AV.Status,\n _sinceId: 0,\n _maxId: 0,\n _inboxType: 'default',\n _owner: null,\n _newObject: function _newObject() {\n return new AV.Status();\n },\n _createRequest: function _createRequest(params, options) {\n return AV.InboxQuery.__super__._createRequest.call(this, params, options, '/subscribe/statuses');\n },\n\n /**\n * Sets the messageId of results to skip before returning any results.\n * This is useful for pagination.\n * Default is zero.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n sinceId: function sinceId(id) {\n this._sinceId = id;\n return this;\n },\n /**\n * Sets the maximal messageId of results。\n * This is useful for pagination.\n * Default is zero that is no limition.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n maxId: function maxId(id) {\n this._maxId = id;\n return this;\n },\n /**\n * Sets the owner of the querying inbox.\n * @param {AV.User} owner The inbox owner.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n owner: function owner(_owner) {\n this._owner = _owner;\n return this;\n },\n /**\n * Sets the querying inbox type.default is 'default'.\n * @param {Object} type The inbox type.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n inboxType: function inboxType(type) {\n this._inboxType = type;\n return this;\n },\n _getParams: function _getParams() {\n var params = AV.InboxQuery.__super__._getParams.call(this);\n params.owner = AV._encode(this._owner);\n params.inboxType = AV._encode(this._inboxType);\n params.sinceId = AV._encode(this._sinceId);\n params.maxId = AV._encode(this._maxId);\n return params;\n }\n });\n\n /**\n * Create a inbox status query to find someone's inbox statuses.\n * @since 0.3.0\n * @param {AV.User} owner The inbox's owner\n * @param {String} inboxType The inbox type,'default' by default.\n * @return {AV.InboxQuery} The inbox query object.\n * @see AV.InboxQuery\n * @example\n * //Find current user's default inbox statuses.\n * var query = AV.Status.inboxQuery(AV.User.current());\n * //find the statuses after the last message id\n * query.sinceId(lastMessageId);\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n AV.Status.inboxQuery = function (owner, inboxType) {\n var query = new AV.InboxQuery(AV.Status);\n if (owner) {\n query._owner = owner;\n }\n if (inboxType) {\n query._inboxType = inboxType;\n }\n return query;\n };\n};\n\n/***/ }),\n/* 330 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar AVRequest = __webpack_require__(12)._request;\n\nmodule.exports = function (AV) {\n /**\n * A builder to generate sort string for app searching.For example:\n * @class\n * @since 0.5.1\n * @example\n * var builder = new AV.SearchSortBuilder();\n * builder.ascending('key1').descending('key2','max');\n * var query = new AV.SearchQuery('Player');\n * query.sortBy(builder);\n * query.find().then();\n */\n AV.SearchSortBuilder = function () {\n this._sortFields = [];\n };\n\n _.extend(AV.SearchSortBuilder.prototype,\n /** @lends AV.SearchSortBuilder.prototype */{\n _addField: function _addField(key, order, mode, missing) {\n var field = {};\n field[key] = {\n order: order || 'asc',\n mode: mode || 'avg',\n missing: '_' + (missing || 'last')\n };\n this._sortFields.push(field);\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n ascending: function ascending(key, mode, missing) {\n return this._addField(key, 'asc', mode, missing);\n },\n\n /**\n * Sorts the results in descending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n descending: function descending(key, mode, missing) {\n return this._addField(key, 'desc', mode, missing);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Object} options The other options such as mode,order, unit etc.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n whereNear: function whereNear(key, point, options) {\n options = options || {};\n var field = {};\n var geo = {\n lat: point.latitude,\n lon: point.longitude\n };\n var m = {\n order: options.order || 'asc',\n mode: options.mode || 'avg',\n unit: options.unit || 'km'\n };\n m[key] = geo;\n field['_geo_distance'] = m;\n\n this._sortFields.push(field);\n return this;\n },\n\n /**\n * Build a sort string by configuration.\n * @return {String} the sort string.\n */\n build: function build() {\n return (0, _stringify2.default)(AV._encode(this._sortFields));\n }\n });\n\n /**\n * App searching query.Use just like AV.Query:\n *\n * Visit <a href='https://leancloud.cn/docs/app_search_guide.html'>App Searching Guide</a>\n * for more details.\n * @class\n * @since 0.5.1\n * @example\n * var query = new AV.SearchQuery('Player');\n * query.queryString('*');\n * query.find().then(function(results) {\n * console.log('Found %d objects', query.hits());\n * //Process results\n * });\n */\n AV.SearchQuery = AV.Query._extend(\n /** @lends AV.SearchQuery.prototype */{\n _sid: null,\n _hits: 0,\n _queryString: null,\n _highlights: null,\n _sortBuilder: null,\n _clazz: null,\n\n constructor: function constructor(className) {\n if (className) {\n this._clazz = className;\n } else {\n className = '__INVALID_CLASS';\n }\n AV.Query.call(this, className);\n },\n\n _createRequest: function _createRequest(params, options) {\n return AVRequest('search/select', null, null, 'GET', params || this._getParams(), options);\n },\n\n /**\n * Sets the sid of app searching query.Default is null.\n * @param {String} sid Scroll id for searching.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n sid: function sid(_sid) {\n this._sid = _sid;\n return this;\n },\n\n /**\n * Sets the query string of app searching.\n * @param {String} q The query string.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n queryString: function queryString(q) {\n this._queryString = q;\n return this;\n },\n\n /**\n * Sets the highlight fields. Such as\n * <pre><code>\n * query.highlights('title');\n * //or pass an array.\n * query.highlights(['title', 'content'])\n * </code></pre>\n * @param {String|String[]} highlights a list of fields.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n highlights: function highlights(_highlights) {\n var objects;\n if (_highlights && _.isString(_highlights)) {\n objects = _.toArray(arguments);\n } else {\n objects = _highlights;\n }\n this._highlights = objects;\n return this;\n },\n\n /**\n * Sets the sort builder for this query.\n * @see AV.SearchSortBuilder\n * @param { AV.SearchSortBuilder} builder The sort builder.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n *\n */\n sortBy: function sortBy(builder) {\n this._sortBuilder = builder;\n return this;\n },\n\n /**\n * Returns the number of objects that match this query.\n * @return {Number}\n */\n hits: function hits() {\n if (!this._hits) {\n this._hits = 0;\n }\n return this._hits;\n },\n\n _processResult: function _processResult(json) {\n delete json['className'];\n delete json['_app_url'];\n delete json['_deeplink'];\n return json;\n },\n\n /**\n * Returns true when there are more documents can be retrieved by this\n * query instance, you can call find function to get more results.\n * @see AV.SearchQuery#find\n * @return {Boolean}\n */\n hasMore: function hasMore() {\n return !this._hitEnd;\n },\n\n /**\n * Reset current query instance state(such as sid, hits etc) except params\n * for a new searching. After resetting, hasMore() will return true.\n */\n reset: function reset() {\n this._hitEnd = false;\n this._sid = null;\n this._hits = 0;\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n * Either options.success or options.error is called when the find\n * completes.\n *\n * @see AV.Query#find\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find: function find(options) {\n var self = this;\n\n var request = this._createRequest(undefined, options);\n\n return request.then(function (response) {\n //update sid for next querying.\n if (response.sid) {\n self._oldSid = self._sid;\n self._sid = response.sid;\n } else {\n self._sid = null;\n self._hitEnd = true;\n }\n self._hits = response.hits || 0;\n\n return _.map(response.results, function (json) {\n if (json.className) {\n response.className = json.className;\n }\n var obj = self._newObject(response);\n obj.appURL = json['_app_url'];\n obj._finishFetch(self._processResult(json), true);\n return obj;\n });\n });\n },\n\n _getParams: function _getParams() {\n var params = AV.SearchQuery.__super__._getParams.call(this);\n delete params.where;\n if (this._clazz) {\n params.clazz = this.className;\n }\n if (this._sid) {\n params.sid = this._sid;\n }\n if (!this._queryString) {\n throw new Error('Please set query string.');\n } else {\n params.q = this._queryString;\n }\n if (this._highlights) {\n params.highlights = this._highlights.join(',');\n }\n if (this._sortBuilder && params.order) {\n throw new Error('sort and order can not be set at same time.');\n }\n if (this._sortBuilder) {\n params.sort = this._sortBuilder.build();\n }\n\n return params;\n }\n });\n};\n\n/**\n * Sorts the results in ascending order by the given key.\n *\n * @method AV.SearchQuery#ascending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addAscending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n/**\n * Sorts the results in descending order by the given key.\n *\n * @method AV.SearchQuery#descending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addDescending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n/**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @method AV.SearchQuery#include\n * @param {String[]} keys The name of the key to include.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @method AV.SearchQuery#skip\n * @param {Number} n the number of results to skip.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @method AV.SearchQuery#limit\n * @param {Number} n the number of results to limit to.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n/***/ }),\n/* 331 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\nvar AVError = __webpack_require__(29);\n\nvar _require = __webpack_require__(12),\n request = _require.request;\n\nmodule.exports = function (AV) {\n /**\n * 包含了使用了 LeanCloud\n * <a href='/docs/leaninsight_guide.html'>离线数据分析功能</a>的函数。\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @namespace\n */\n AV.Insight = AV.Insight || {};\n\n _.extend(AV.Insight,\n /** @lends AV.Insight */{\n /**\n * 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用\n * AV.Insight.JobQuery 查询任务状态和结果。\n * @param {Object} jobConfig 任务配置的 JSON 对象,例如:<code><pre>\n * { \"sql\" : \"select count(*) as c,gender from _User group by gender\",\n * \"saveAs\": {\n * \"className\" : \"UserGender\",\n * \"limit\": 1\n * }\n * }\n * </pre></code>\n * sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n startJob: function startJob(jobConfig, options) {\n if (!jobConfig || !jobConfig.sql) {\n throw new Error('Please provide the sql to run the job.');\n }\n var data = {\n jobConfig: jobConfig,\n appId: AV.applicationId\n };\n return request({\n path: '/bigquery/jobs',\n method: 'POST',\n data: AV._encode(data, null, true),\n authOptions: options,\n signKey: false\n }).then(function (resp) {\n return AV._decode(resp).id;\n });\n },\n\n /**\n * 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放)\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @param {String} event 监听的事件,目前尚不支持。\n * @param {Function} 监听回调函数,接收 (err, id) 两个参数,err 表示错误信息,\n * id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。\n *\n */\n on: function on(event, cb) {}\n });\n\n /**\n * 创建一个对象,用于查询 Insight 任务状态和结果。\n * @class\n * @param {String} id 任务 id\n * @since 0.5.5\n */\n AV.Insight.JobQuery = function (id, className) {\n if (!id) {\n throw new Error('Please provide the job id.');\n }\n this.id = id;\n this.className = className;\n this._skip = 0;\n this._limit = 100;\n };\n\n _.extend(AV.Insight.JobQuery.prototype,\n /** @lends AV.Insight.JobQuery.prototype */{\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function skip(n) {\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function limit(n) {\n this._limit = n;\n return this;\n },\n\n /**\n * 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数,\n * results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间\n * startTime、endTime 等信息。\n *\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n *\n */\n find: function find(options) {\n var params = {\n skip: this._skip,\n limit: this._limit\n };\n\n return request({\n path: '/bigquery/jobs/' + this.id,\n method: 'GET',\n query: params,\n authOptions: options,\n signKey: false\n }).then(function (response) {\n if (response.error) {\n return _promise2.default.reject(new AVError(response.code, response.error));\n }\n return _promise2.default.resolve(response);\n });\n }\n });\n};\n\n/***/ }),\n/* 332 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(0);\n\nvar _require = __webpack_require__(12),\n LCRequest = _require.request;\n\nvar _require2 = __webpack_require__(15),\n getSessionToken = _require2.getSessionToken;\n\nmodule.exports = function (AV) {\n /**\n * Contains functions to deal with Friendship in LeanCloud.\n * @class\n */\n AV.Friendship = {\n /**\n * Request friendship.\n * @since 4.8.0\n * @param {String | AV.User | Object} options if an AV.User or string is given, it will be used as the friend.\n * @param {AV.User | string} options.friend The friend (or friend's objectId) to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of followeeQuery.\n * @param {*} [authOptions]\n * @return {Promise<void>}\n */\n request: function request(options, authOptions) {\n if (!AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n var friend = void 0;\n var attributes = void 0;\n if (options.friend) {\n friend = options.friend;\n attributes = options.attributes;\n } else {\n friend = options;\n }\n var friendObject = _.isString(friend) ? AV.Object.createWithoutData('_User', friend) : friend;\n return LCRequest({\n method: 'POST',\n path: '/users/friendshipRequests',\n data: AV._encode({\n user: AV.User.current(),\n friend: friendObject,\n friendship: attributes\n }),\n authOptions: authOptions\n });\n },\n\n /**\n * Accept a friendship request.\n * @since 4.8.0\n * @param {AV.Object | string | Object} options if an AV.Object or string is given, it will be used as the request in _FriendshipRequest.\n * @param {AV.Object} options.request The request (or it's objectId) to be accepted.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of {@link AV#followeeQuery}.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n acceptRequest: function acceptRequest(options) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!getSessionToken(authOptions) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n var request = void 0;\n var attributes = void 0;\n if (options.request) {\n request = options.request;\n attributes = options.attributes;\n } else {\n request = options;\n }\n var requestId = _.isString(request) ? request : request.id;\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/accept',\n data: {\n friendship: AV._encode(attributes)\n },\n authOptions: authOptions\n });\n },\n\n /**\n * Decline a friendship request.\n * @param {AV.Object | string} request The request (or it's objectId) to be declined.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n declineRequest: function declineRequest(request) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!getSessionToken(authOptions) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n var requestId = _.isString(request) ? request : request.id;\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/decline',\n authOptions: authOptions\n });\n }\n };\n};\n\n/***/ }),\n/* 333 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _stringify = __webpack_require__(18);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\n\nvar _require = __webpack_require__(12),\n _request = _require._request;\n\nvar AV = __webpack_require__(34);\n\nvar serializeMessage = function serializeMessage(message) {\n if (typeof message === 'string') {\n return message;\n }\n if (typeof message.getPayload === 'function') {\n return (0, _stringify2.default)(message.getPayload());\n }\n return (0, _stringify2.default)(message);\n};\n\n/**\n * <p>An AV.Conversation is a local representation of a LeanCloud realtime's\n * conversation. This class is a subclass of AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * conversation specific methods, like get members, creators of this conversation.\n * </p>\n *\n * @class AV.Conversation\n * @param {String} name The name of the Role to create.\n * @param {Object} [options]\n * @param {Boolean} [options.isSystem] Set this conversation as system conversation.\n * @param {Boolean} [options.isTransient] Set this conversation as transient conversation.\n */\nmodule.exports = AV.Object.extend('_Conversation',\n/** @lends AV.Conversation.prototype */{\n constructor: function constructor(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n AV.Object.prototype.constructor.call(this, null, null);\n this.set('name', name);\n if (options.isSystem !== undefined) {\n this.set('sys', options.isSystem ? true : false);\n }\n if (options.isTransient !== undefined) {\n this.set('tr', options.isTransient ? true : false);\n }\n },\n\n /**\n * Get current conversation's creator.\n *\n * @return {String}\n */\n getCreator: function getCreator() {\n return this.get('c');\n },\n\n\n /**\n * Get the last message's time.\n *\n * @return {Date}\n */\n getLastMessageAt: function getLastMessageAt() {\n return this.get('lm');\n },\n\n\n /**\n * Get this conversation's members\n *\n * @return {String[]}\n */\n getMembers: function getMembers() {\n return this.get('m');\n },\n\n\n /**\n * Add a member to this conversation\n *\n * @param {String} member\n */\n addMember: function addMember(member) {\n return this.add('m', member);\n },\n\n\n /**\n * Get this conversation's members who set this conversation as muted.\n *\n * @return {String[]}\n */\n getMutedMembers: function getMutedMembers() {\n return this.get('mu');\n },\n\n\n /**\n * Get this conversation's name field.\n *\n * @return String\n */\n getName: function getName() {\n return this.get('name');\n },\n\n\n /**\n * Returns true if this conversation is transient conversation.\n *\n * @return {Boolean}\n */\n isTransient: function isTransient() {\n return this.get('tr');\n },\n\n\n /**\n * Returns true if this conversation is system conversation.\n *\n * @return {Boolean}\n */\n isSystem: function isSystem() {\n return this.get('sys');\n },\n\n\n /**\n * Send realtime message to this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}\n * @param {Object} [options]\n * @param {Boolean} [options.transient] Whether send this message as transient message or not.\n * @param {String[]} [options.toClients] Ids of clients to send to. This option can be used only in system conversation.\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n send: function send(fromClient, message) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var data = {\n from_peer: fromClient,\n conv_id: this.id,\n transient: false,\n message: serializeMessage(message)\n };\n if (options.toClients !== undefined) {\n data.to_peers = options.toClients;\n }\n if (options.transient !== undefined) {\n data.transient = options.transient ? true : false;\n }\n if (options.pushData !== undefined) {\n data.push_data = options.pushData;\n }\n return _request('rtm', 'messages', null, 'POST', data, authOptions);\n },\n\n\n /**\n * Send realtime broadcast message to all clients, via this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}.\n * @param {Object} [options]\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}.\n * @param {Object} [options.validTill] The message will valid till this time.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n broadcast: function broadcast(fromClient, message) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var data = {\n from_peer: fromClient,\n conv_id: this.id,\n message: serializeMessage(message)\n };\n if (options.pushData !== undefined) {\n data.push = options.pushData;\n }\n if (options.validTill !== undefined) {\n var ts = options.validTill;\n if (_.isDate(ts)) {\n ts = ts.getTime();\n }\n options.valid_till = ts;\n }\n return _request('rtm', 'broadcast', null, 'POST', data, authOptions);\n }\n});\n\n/***/ }),\n/* 334 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _promise = __webpack_require__(4);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _ = __webpack_require__(0);\n\nvar _require = __webpack_require__(12),\n request = _require.request;\n\nvar _require2 = __webpack_require__(15),\n ensureArray = _require2.ensureArray,\n parseDate = _require2.parseDate;\n\nvar AV = __webpack_require__(34);\n\n/**\n * The version change interval for Leaderboard\n * @enum\n */\nAV.LeaderboardVersionChangeInterval = {\n NEVER: 'never',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month'\n};\n\n/**\n * The order of the leaderboard results\n * @enum\n */\nAV.LeaderboardOrder = {\n ASCENDING: 'ascending',\n DESCENDING: 'descending'\n};\n\n/**\n * The update strategy for Leaderboard\n * @enum\n */\nAV.LeaderboardUpdateStrategy = {\n /** Only keep the best statistic. If the leaderboard is in descending order, the best statistic is the highest one. */\n BETTER: 'better',\n /** Keep the last updated statistic */\n LAST: 'last',\n /** Keep the sum of all updated statistics */\n SUM: 'sum'\n};\n\n/**\n * @typedef {Object} Ranking\n * @property {number} rank Starts at 0\n * @property {number} value the statistic value of this ranking\n * @property {AV.User} user The user of this ranking\n * @property {Statistic[]} [includedStatistics] Other statistics of the user, specified by the `includeStatistic` option of `AV.Leaderboard.getResults()`\n */\n\n/**\n * @typedef {Object} LeaderboardArchive\n * @property {string} statisticName\n * @property {number} version version of the leaderboard\n * @property {string} status\n * @property {string} url URL for the downloadable archive\n * @property {Date} activatedAt time when this version became active\n * @property {Date} deactivatedAt time when this version was deactivated by a version incrementing\n */\n\n/**\n * @class\n */\nfunction Statistic(_ref) {\n var name = _ref.name,\n value = _ref.value,\n version = _ref.version;\n\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {number}\n */\n this.value = value;\n /**\n * @type {number?}\n */\n this.version = version;\n}\n\nvar parseStatisticData = function parseStatisticData(statisticData) {\n var _AV$_decode = AV._decode(statisticData),\n name = _AV$_decode.statisticName,\n value = _AV$_decode.statisticValue,\n version = _AV$_decode.version;\n\n return new Statistic({ name: name, value: value, version: version });\n};\n\n/**\n * @class\n */\nAV.Leaderboard = function Leaderboard(statisticName) {\n /**\n * @type {string}\n */\n this.statisticName = statisticName;\n /**\n * @type {AV.LeaderboardOrder}\n */\n this.order = undefined;\n /**\n * @type {AV.LeaderboardUpdateStrategy}\n */\n this.updateStrategy = undefined;\n /**\n * @type {AV.LeaderboardVersionChangeInterval}\n */\n this.versionChangeInterval = undefined;\n /**\n * @type {number}\n */\n this.version = undefined;\n /**\n * @type {Date?}\n */\n this.nextResetAt = undefined;\n /**\n * @type {Date?}\n */\n this.createdAt = undefined;\n};\nvar Leaderboard = AV.Leaderboard;\n\n/**\n * Create an instance of Leaderboard for the give statistic name.\n * @param {string} statisticName\n * @return {AV.Leaderboard}\n */\nAV.Leaderboard.createWithoutData = function (statisticName) {\n return new Leaderboard(statisticName);\n};\n/**\n * (masterKey required) Create a new Leaderboard.\n * @param {Object} options\n * @param {string} options.statisticName\n * @param {AV.LeaderboardOrder} options.order\n * @param {AV.LeaderboardVersionChangeInterval} [options.versionChangeInterval] default to WEEK\n * @param {AV.LeaderboardUpdateStrategy} [options.updateStrategy] default to BETTER\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\nAV.Leaderboard.createLeaderboard = function (_ref2, authOptions) {\n var statisticName = _ref2.statisticName,\n order = _ref2.order,\n versionChangeInterval = _ref2.versionChangeInterval,\n updateStrategy = _ref2.updateStrategy;\n return request({\n method: 'POST',\n path: '/leaderboard/leaderboards',\n data: {\n statisticName: statisticName,\n order: order,\n versionChangeInterval: versionChangeInterval,\n updateStrategy: updateStrategy\n },\n authOptions: authOptions\n }).then(function (data) {\n var leaderboard = new Leaderboard(statisticName);\n return leaderboard._finishFetch(data);\n });\n};\n/**\n * Get the Leaderboard with the specified statistic name.\n * @param {string} statisticName\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\nAV.Leaderboard.getLeaderboard = function (statisticName, authOptions) {\n return Leaderboard.createWithoutData(statisticName).fetch(authOptions);\n};\n/**\n * Get Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {string[]} [options.statisticNames] Specify the statisticNames. If not set, all statistics of the user will be fetched.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Statistic[]>}\n */\nAV.Leaderboard.getStatistics = function (user) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n statisticNames = _ref3.statisticNames;\n\n var authOptions = arguments[2];\n return _promise2.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'GET',\n path: '/leaderboard/users/' + user.id + '/statistics',\n query: {\n statistics: statisticNames ? ensureArray(statisticNames).join(',') : undefined\n },\n authOptions: authOptions\n }).then(function (_ref4) {\n var results = _ref4.results;\n return results.map(parseStatisticData);\n });\n });\n};\n\n/**\n * Update Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to update.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {boolean} [options.overwrite] Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards\n * @return {Promise<Statistic[]>}\n */\nAV.Leaderboard.updateStatistics = function (user, statistics) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return _promise2.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n var data = _.map(statistics, function (value, key) {\n return {\n statisticName: key,\n statisticValue: value\n };\n });\n var overwrite = options.overwrite;\n\n return request({\n method: 'POST',\n path: '/leaderboard/users/' + user.id + '/statistics',\n query: {\n overwrite: overwrite ? 1 : undefined\n },\n data: data,\n authOptions: options\n }).then(function (_ref5) {\n var results = _ref5.results;\n return results.map(parseStatisticData);\n });\n });\n};\n\n/**\n * Delete Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to delete.\n * @param {AuthOptions} [options]\n * @return {Promise<void>}\n */\nAV.Leaderboard.deleteStatistics = function (user, statisticNames, authOptions) {\n return _promise2.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'DELETE',\n path: '/leaderboard/users/' + user.id + '/statistics',\n query: {\n statistics: ensureArray(statisticNames).join(',')\n },\n authOptions: authOptions\n }).then(function () {\n return undefined;\n });\n });\n};\n\n_.extend(Leaderboard.prototype,\n/** @lends AV.Leaderboard.prototype */{\n _finishFetch: function _finishFetch(data) {\n var _this = this;\n\n _.forEach(data, function (value, key) {\n if (key === 'updatedAt' || key === 'objectId') return;\n if (key === 'expiredAt') {\n key = 'nextResetAt';\n }\n if (key === 'createdAt') {\n value = parseDate(value);\n }\n if (value && value.__type === 'Date') {\n value = parseDate(value.iso);\n }\n _this[key] = value;\n });\n return this;\n },\n\n /**\n * Fetch data from the srever.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n fetch: function fetch(authOptions) {\n var _this2 = this;\n\n return request({\n method: 'GET',\n path: '/leaderboard/leaderboards/' + this.statisticName,\n authOptions: authOptions\n }).then(function (data) {\n return _this2._finishFetch(data);\n });\n },\n\n /**\n * Counts the number of users participated in this leaderboard\n * @param {Object} [options]\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<number>}\n */\n count: function count() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n version = _ref6.version;\n\n var authOptions = arguments[1];\n\n return request({\n method: 'GET',\n path: '/leaderboard/leaderboards/' + this.statisticName + '/ranks',\n query: {\n count: 1,\n limit: 0,\n version: version\n },\n authOptions: authOptions\n }).then(function (_ref7) {\n var count = _ref7.count;\n return count;\n });\n },\n _getResults: function _getResults(_ref8, authOptions, userId) {\n var skip = _ref8.skip,\n limit = _ref8.limit,\n selectUserKeys = _ref8.selectUserKeys,\n includeUserKeys = _ref8.includeUserKeys,\n includeStatistics = _ref8.includeStatistics,\n version = _ref8.version;\n\n return request({\n method: 'GET',\n path: '/leaderboard/leaderboards/' + this.statisticName + '/ranks' + (userId ? '/' + userId : ''),\n query: {\n skip: skip,\n limit: limit,\n selectUserKeys: _.union(ensureArray(selectUserKeys), ensureArray(includeUserKeys)).join(',') || undefined,\n includeUser: includeUserKeys ? ensureArray(includeUserKeys).join(',') : undefined,\n includeStatistics: includeStatistics ? ensureArray(includeStatistics).join(',') : undefined,\n version: version\n },\n authOptions: authOptions\n }).then(function (_ref9) {\n var rankings = _ref9.results;\n return rankings.map(function (rankingData) {\n var _AV$_decode2 = AV._decode(rankingData),\n user = _AV$_decode2.user,\n value = _AV$_decode2.statisticValue,\n rank = _AV$_decode2.rank,\n _AV$_decode2$statisti = _AV$_decode2.statistics,\n statistics = _AV$_decode2$statisti === undefined ? [] : _AV$_decode2$statisti;\n\n return {\n user: user,\n value: value,\n rank: rank,\n includedStatistics: statistics.map(parseStatisticData)\n };\n });\n });\n },\n\n /**\n * Retrieve a list of ranked users for this Leaderboard.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResults: function getResults() {\n var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n skip = _ref10.skip,\n limit = _ref10.limit,\n selectUserKeys = _ref10.selectUserKeys,\n includeUserKeys = _ref10.includeUserKeys,\n includeStatistics = _ref10.includeStatistics,\n version = _ref10.version;\n\n var authOptions = arguments[1];\n\n return this._getResults({\n skip: skip,\n limit: limit,\n selectUserKeys: selectUserKeys,\n includeUserKeys: includeUserKeys,\n includeStatistics: includeStatistics,\n version: version\n }, authOptions);\n },\n\n /**\n * Retrieve a list of ranked users for this Leaderboard, centered on the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResultsAroundUser: function getResultsAroundUser(user) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var authOptions = arguments[2];\n\n // getResultsAroundUser(options, authOptions)\n if (user && typeof user.id !== 'string') {\n return this.getResultsAroundUser(undefined, user, options);\n }\n var limit = options.limit,\n selectUserKeys = options.selectUserKeys,\n includeUserKeys = options.includeUserKeys,\n includeStatistics = options.includeStatistics,\n version = options.version;\n\n return this._getResults({ limit: limit, selectUserKeys: selectUserKeys, includeUserKeys: includeUserKeys, includeStatistics: includeStatistics, version: version }, authOptions, user ? user.id : 'self');\n },\n _update: function _update(data, authOptions) {\n var _this3 = this;\n\n return request({\n method: 'PUT',\n path: '/leaderboard/leaderboards/' + this.statisticName,\n data: data,\n authOptions: authOptions\n }).then(function (result) {\n return _this3._finishFetch(result);\n });\n },\n\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardVersionChangeInterval} versionChangeInterval\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateVersionChangeInterval: function updateVersionChangeInterval(versionChangeInterval, authOptions) {\n return this._update({ versionChangeInterval: versionChangeInterval }, authOptions);\n },\n\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardUpdateStrategy} updateStrategy\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateUpdateStrategy: function updateUpdateStrategy(updateStrategy, authOptions) {\n return this._update({ updateStrategy: updateStrategy }, authOptions);\n },\n\n /**\n * (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n reset: function reset(authOptions) {\n var _this4 = this;\n\n return request({\n method: 'PUT',\n path: '/leaderboard/leaderboards/' + this.statisticName + '/incrementVersion',\n authOptions: authOptions\n }).then(function (data) {\n return _this4._finishFetch(data);\n });\n },\n\n /**\n * (masterKey required) Delete the Leaderboard and its all archived versions.\n * @param {AuthOptions} [authOptions]\n * @return {void}\n */\n destroy: function destroy(authOptions) {\n return AV.request({\n method: 'DELETE',\n path: '/leaderboard/leaderboards/' + this.statisticName,\n authOptions: authOptions\n }).then(function () {\n return undefined;\n });\n },\n\n /**\n * (masterKey required) Get archived versions.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<LeaderboardArchive[]>}\n */\n getArchives: function getArchives() {\n var _this5 = this;\n\n var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n skip = _ref11.skip,\n limit = _ref11.limit;\n\n var authOptions = arguments[1];\n\n return request({\n method: 'GET',\n path: '/leaderboard/leaderboards/' + this.statisticName + '/archives',\n query: {\n skip: skip,\n limit: limit\n },\n authOptions: authOptions\n }).then(function (_ref12) {\n var results = _ref12.results;\n return results.map(function (_ref13) {\n var version = _ref13.version,\n status = _ref13.status,\n url = _ref13.url,\n activatedAt = _ref13.activatedAt,\n deactivatedAt = _ref13.deactivatedAt;\n return {\n statisticName: _this5.statisticName,\n version: version,\n status: status,\n url: url,\n activatedAt: parseDate(activatedAt.iso),\n deactivatedAt: parseDate(deactivatedAt.iso)\n };\n });\n });\n }\n});\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// av-core-min.js","// ESM Exports\n// ===========\n// This module is the package entry point for ES module users. In other words,\n// it is the module they are interfacing with when they import from the whole\n// package instead of from a submodule, like this:\n//\n// ```js\n// import { map } from 'underscore';\n// ```\n//\n// The difference with `./index-default`, which is the package entry point for\n// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and\n// default exports are considered to be siblings, so when you have a default\n// export, its properties are not automatically available as named exports. For\n// this reason, we re-export the named exports in addition to providing the same\n// default export as in `./index-default`.\nexport { default } from './index-default.js';\nexport * from './index.js';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index-all.js\n// module id = 0\n// module chunks = 0 1","// Current version.\nexport var VERSION = '1.12.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_setup.js\n// module id = 1\n// module chunks = 0 1","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_core.js\n// module id = 2\n// module chunks = 0 1","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/keys.js\n// module id = 3\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/promise.js\n// module id = 4\n// module chunks = 0 1","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_tagTester.js\n// module id = 5\n// module chunks = 0 1","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_global.js\n// module id = 6\n// module chunks = 0 1","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks.js\n// module id = 7\n// module chunks = 0 1","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_cb.js\n// module id = 8\n// module chunks = 0 1","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/restArguments.js\n// module id = 9\n// module chunks = 0 1","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/underscore.js\n// module id = 10\n// module chunks = 0 1","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_isArrayLike.js\n// module id = 11\n// module chunks = 0 1","const _ = require('underscore');\nconst md5 = require('md5');\nconst { extend } = require('underscore');\nconst AV = require('./av');\nconst { getSessionToken } = require('./utils');\nconst ajax = require('./utils/ajax');\n\n// 计算 X-LC-Sign 的签名方法\nconst sign = (key, isMasterKey) => {\n const now = new Date().getTime();\n const signature = md5(now + key);\n if (isMasterKey) {\n return `${signature},${now},master`;\n }\n return `${signature},${now}`;\n};\n\nconst setAppKey = (headers, signKey) => {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.applicationKey);\n } else {\n headers['X-LC-Key'] = AV.applicationKey;\n }\n};\n\nconst setHeaders = (authOptions = {}, signKey) => {\n const headers = {\n 'X-LC-Id': AV.applicationId,\n 'Content-Type': 'application/json;charset=UTF-8',\n };\n let useMasterKey = false;\n if (typeof authOptions.useMasterKey === 'boolean') {\n useMasterKey = authOptions.useMasterKey;\n } else if (typeof AV._config.useMasterKey === 'boolean') {\n useMasterKey = AV._config.useMasterKey;\n }\n if (useMasterKey) {\n if (AV.masterKey) {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.masterKey, true);\n } else {\n headers['X-LC-Key'] = `${AV.masterKey},master`;\n }\n } else {\n console.warn('masterKey is not set, fall back to use appKey');\n setAppKey(headers, signKey);\n }\n } else {\n setAppKey(headers, signKey);\n }\n if (AV.hookKey) {\n headers['X-LC-Hook-Key'] = AV.hookKey;\n }\n if (AV._config.production !== null) {\n headers['X-LC-Prod'] = String(AV._config.production);\n }\n headers[process.env.PLATFORM === 'NODE_JS' ? 'User-Agent' : 'X-LC-UA'] =\n AV._sharedConfig.userAgent;\n\n return Promise.resolve().then(() => {\n // Pass the session token\n const sessionToken = getSessionToken(authOptions);\n if (sessionToken) {\n headers['X-LC-Session'] = sessionToken;\n } else if (!AV._config.disableCurrentUser) {\n return AV.User.currentAsync().then(currentUser => {\n if (currentUser && currentUser._sessionToken) {\n headers['X-LC-Session'] = currentUser._sessionToken;\n }\n return headers;\n });\n }\n return headers;\n });\n};\n\nconst createApiUrl = ({\n service = 'api',\n version = '1.1',\n path,\n // query, // don't care\n // method, // don't care\n // data, // don't care\n}) => {\n let apiURL = AV._config.serverURLs[service];\n\n if (!apiURL) throw new Error(`undefined server URL for ${service}`);\n\n if (apiURL.charAt(apiURL.length - 1) !== '/') {\n apiURL += '/';\n }\n apiURL += version;\n if (path) {\n apiURL += path;\n }\n\n return apiURL;\n};\n\n/**\n * Low level REST API client. Call REST endpoints with authorization headers.\n * @function AV.request\n * @since 3.0.0\n * @param {Object} options\n * @param {String} options.method HTTP method\n * @param {String} options.path endpoint path, e.g. `/classes/Test/55759577e4b029ae6015ac20`\n * @param {Object} [options.query] query string dict\n * @param {Object} [options.data] HTTP body\n * @param {AuthOptions} [options.authOptions]\n * @param {String} [options.service = 'api']\n * @param {String} [options.version = '1.1']\n */\nconst request = ({\n service,\n version,\n method,\n path,\n query,\n data,\n authOptions,\n signKey = true,\n}) => {\n if (!(AV.applicationId && (AV.applicationKey || AV.masterKey))) {\n throw new Error('Not initialized');\n }\n if (AV._appRouter) {\n AV._appRouter.refresh();\n }\n const { requestTimeout: timeout } = AV._config;\n const url = createApiUrl({ service, path, version });\n return setHeaders(authOptions, signKey).then(headers =>\n ajax({ method, url, query, data, headers, timeout }).catch(error => {\n let errorJSON = {\n code: error.code || -1,\n error: error.message || error.responseText,\n };\n if (error.response && error.response.code) {\n errorJSON = error.response;\n } else if (error.responseText) {\n try {\n errorJSON = JSON.parse(error.responseText);\n } catch (e) {\n // If we fail to parse the error text, that's okay.\n }\n }\n errorJSON.rawMessage = errorJSON.rawMessage || errorJSON.error;\n if (!AV._sharedConfig.keepErrorRawMessage) {\n errorJSON.error += ` [${error.statusCode || 'N/A'} ${method} ${url}]`;\n }\n // Transform the error into an instance of AVError by trying to parse\n // the error string as JSON.\n const err = new Error(errorJSON.error);\n delete errorJSON.error;\n throw _.extend(err, errorJSON);\n })\n );\n};\n\n// lagecy request\nconst _request = (\n route,\n className,\n objectId,\n method,\n data,\n authOptions,\n query\n) => {\n let path = '';\n if (route) path += `/${route}`;\n if (className) path += `/${className}`;\n if (objectId) path += `/${objectId}`;\n // for migeration\n if (data && data._fetchWhenSave)\n throw new Error('_fetchWhenSave should be in the query');\n if (data && data._where) throw new Error('_where should be in the query');\n if (method && method.toLowerCase() === 'get') {\n query = extend({}, query, data);\n data = null;\n }\n return request({\n method,\n path,\n query,\n data,\n authOptions,\n });\n};\n\nAV.request = request;\n\nmodule.exports = {\n _request,\n request,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/request.js","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFunction.js\n// module id = 13\n// module chunks = 0 1","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_getLength.js\n// module id = 14\n// module chunks = 0 1","const _ = require('underscore');\n\n// Helper function to check null or undefined.\nconst isNullOrUndefined = x => _.isNull(x) || _.isUndefined(x);\n\nconst ensureArray = target => {\n if (_.isArray(target)) {\n return target;\n }\n if (target === undefined || target === null) {\n return [];\n }\n return [target];\n};\n\nconst transformFetchOptions = ({ keys, include, includeACL } = {}) => {\n const fetchOptions = {};\n if (keys) {\n fetchOptions.keys = ensureArray(keys).join(',');\n }\n if (include) {\n fetchOptions.include = ensureArray(include).join(',');\n }\n if (includeACL) {\n fetchOptions.returnACL = includeACL;\n }\n return fetchOptions;\n};\n\nconst getSessionToken = authOptions => {\n if (authOptions.sessionToken) {\n return authOptions.sessionToken;\n }\n if (\n authOptions.user &&\n typeof authOptions.user.getSessionToken === 'function'\n ) {\n return authOptions.user.getSessionToken();\n }\n};\n\nconst tap = interceptor => value => (interceptor(value), value);\n\n// Shared empty constructor function to aid in prototype-chain creation.\nconst EmptyConstructor = function() {};\n\n// Helper function to correctly set up the prototype chain, for subclasses.\n// Similar to `goog.inherits`, but uses a hash of prototype properties and\n// class properties to be extended.\nconst inherits = function inherits(parent, protoProps, staticProps) {\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent's constructor.\n if (protoProps && protoProps.hasOwnProperty('constructor')) {\n child = protoProps.constructor;\n } else {\n /** @ignore */\n child = function() {\n parent.apply(this, arguments);\n };\n }\n\n // Inherit class (static) properties from parent.\n _.extend(child, parent);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n EmptyConstructor.prototype = parent.prototype;\n child.prototype = new EmptyConstructor();\n\n // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n if (protoProps) {\n _.extend(child.prototype, protoProps);\n }\n\n // Add static properties to the constructor function, if supplied.\n if (staticProps) {\n _.extend(child, staticProps);\n }\n\n // Correctly set child's `prototype.constructor`.\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is\n // needed later.\n child.__super__ = parent.prototype;\n\n return child;\n};\n\nconst parseDate = iso8601 => new Date(iso8601);\n\nconst setValue = (target, key, value) => {\n // '.' is not allowed in Class keys, escaping is not in concern now.\n const segs = key.split('.');\n const lastSeg = segs.pop();\n let currentTarget = target;\n segs.forEach(seg => {\n if (currentTarget[seg] === undefined) currentTarget[seg] = {};\n currentTarget = currentTarget[seg];\n });\n currentTarget[lastSeg] = value;\n return target;\n};\n\nconst findValue = (target, key) => {\n const segs = key.split('.');\n const firstSeg = segs[0];\n const lastSeg = segs.pop();\n let currentTarget = target;\n for (let i = 0; i < segs.length; i++) {\n currentTarget = currentTarget[segs[i]];\n if (currentTarget === undefined) {\n return [undefined, undefined, lastSeg];\n }\n }\n const value = currentTarget[lastSeg];\n return [value, currentTarget, lastSeg, firstSeg];\n};\n\nconst isPlainObject = obj =>\n _.isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype;\n\nconst continueWhile = function(predicate, asyncFunction) {\n if (predicate()) {\n return asyncFunction().then(function() {\n return continueWhile(predicate, asyncFunction);\n });\n }\n return Promise.resolve();\n};\n\nmodule.exports = {\n isNullOrUndefined,\n ensureArray,\n transformFetchOptions,\n getSessionToken,\n tap,\n inherits,\n parseDate,\n setValue,\n findValue,\n isPlainObject,\n continueWhile,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_an-object.js\n// module id = 16\n// module chunks = 0 1","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_export.js\n// module id = 17\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/json/stringify.js\n// module id = 18\n// module chunks = 0 1","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-dp.js\n// module id = 19\n// module chunks = 0 1","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-object.js\n// module id = 20\n// module chunks = 0 1","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_descriptors.js\n// module id = 21\n// module chunks = 0 1","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_has.js\n// module id = 22\n// module chunks = 0 1","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_hide.js\n// module id = 23\n// module chunks = 0 1","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_has.js\n// module id = 24\n// module chunks = 0 1","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-iobject.js\n// module id = 25\n// module chunks = 0 1","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isObject.js\n// module id = 26\n// module chunks = 0 1","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArray.js\n// module id = 27\n// module chunks = 0 1","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/each.js\n// module id = 28\n// module chunks = 0 1","const _ = require('underscore');\n\n/**\n * @class AV.Error\n */\n\nfunction AVError(code, message) {\n const error = new Error(message);\n error.code = code;\n return error;\n}\n\n_.extend(\n AVError,\n /** @lends AV.Error */ {\n /**\n * Error code indicating some error other than those enumerated here.\n * @constant\n */\n OTHER_CAUSE: -1,\n\n /**\n * Error code indicating that something has gone wrong with the server.\n * If you get this error code, it is AV's fault. Contact us at\n * https://avoscloud.com/help\n * @constant\n */\n INTERNAL_SERVER_ERROR: 1,\n\n /**\n * Error code indicating the connection to the AV servers failed.\n * @constant\n */\n CONNECTION_FAILED: 100,\n\n /**\n * Error code indicating the specified object doesn't exist.\n * @constant\n */\n OBJECT_NOT_FOUND: 101,\n\n /**\n * Error code indicating you tried to query with a datatype that doesn't\n * support it, like exact matching an array or object.\n * @constant\n */\n INVALID_QUERY: 102,\n\n /**\n * Error code indicating a missing or invalid classname. Classnames are\n * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\n * only valid characters.\n * @constant\n */\n INVALID_CLASS_NAME: 103,\n\n /**\n * Error code indicating an unspecified object id.\n * @constant\n */\n MISSING_OBJECT_ID: 104,\n\n /**\n * Error code indicating an invalid key name. Keys are case-sensitive. They\n * must start with a letter, and a-zA-Z0-9_ are the only valid characters.\n * @constant\n */\n INVALID_KEY_NAME: 105,\n\n /**\n * Error code indicating a malformed pointer. You should not see this unless\n * you have been mucking about changing internal AV code.\n * @constant\n */\n INVALID_POINTER: 106,\n\n /**\n * Error code indicating that badly formed JSON was received upstream. This\n * either indicates you have done something unusual with modifying how\n * things encode to JSON, or the network is failing badly.\n * @constant\n */\n INVALID_JSON: 107,\n\n /**\n * Error code indicating that the feature you tried to access is only\n * available internally for testing purposes.\n * @constant\n */\n COMMAND_UNAVAILABLE: 108,\n\n /**\n * You must call AV.initialize before using the AV library.\n * @constant\n */\n NOT_INITIALIZED: 109,\n\n /**\n * Error code indicating that a field was set to an inconsistent type.\n * @constant\n */\n INCORRECT_TYPE: 111,\n\n /**\n * Error code indicating an invalid channel name. A channel name is either\n * an empty string (the broadcast channel) or contains only a-zA-Z0-9_\n * characters.\n * @constant\n */\n INVALID_CHANNEL_NAME: 112,\n\n /**\n * Error code indicating that push is misconfigured.\n * @constant\n */\n PUSH_MISCONFIGURED: 115,\n\n /**\n * Error code indicating that the object is too large.\n * @constant\n */\n OBJECT_TOO_LARGE: 116,\n\n /**\n * Error code indicating that the operation isn't allowed for clients.\n * @constant\n */\n OPERATION_FORBIDDEN: 119,\n\n /**\n * Error code indicating the result was not found in the cache.\n * @constant\n */\n CACHE_MISS: 120,\n\n /**\n * Error code indicating that an invalid key was used in a nested\n * JSONObject.\n * @constant\n */\n INVALID_NESTED_KEY: 121,\n\n /**\n * Error code indicating that an invalid filename was used for AVFile.\n * A valid file name contains only a-zA-Z0-9_. characters and is between 1\n * and 128 characters.\n * @constant\n */\n INVALID_FILE_NAME: 122,\n\n /**\n * Error code indicating an invalid ACL was provided.\n * @constant\n */\n INVALID_ACL: 123,\n\n /**\n * Error code indicating that the request timed out on the server. Typically\n * this indicates that the request is too expensive to run.\n * @constant\n */\n TIMEOUT: 124,\n\n /**\n * Error code indicating that the email address was invalid.\n * @constant\n */\n INVALID_EMAIL_ADDRESS: 125,\n\n /**\n * Error code indicating a missing content type.\n * @constant\n */\n MISSING_CONTENT_TYPE: 126,\n\n /**\n * Error code indicating a missing content length.\n * @constant\n */\n MISSING_CONTENT_LENGTH: 127,\n\n /**\n * Error code indicating an invalid content length.\n * @constant\n */\n INVALID_CONTENT_LENGTH: 128,\n\n /**\n * Error code indicating a file that was too large.\n * @constant\n */\n FILE_TOO_LARGE: 129,\n\n /**\n * Error code indicating an error saving a file.\n * @constant\n */\n FILE_SAVE_ERROR: 130,\n\n /**\n * Error code indicating an error deleting a file.\n * @constant\n */\n FILE_DELETE_ERROR: 153,\n\n /**\n * Error code indicating that a unique field was given a value that is\n * already taken.\n * @constant\n */\n DUPLICATE_VALUE: 137,\n\n /**\n * Error code indicating that a role's name is invalid.\n * @constant\n */\n INVALID_ROLE_NAME: 139,\n\n /**\n * Error code indicating that an application quota was exceeded. Upgrade to\n * resolve.\n * @constant\n */\n EXCEEDED_QUOTA: 140,\n\n /**\n * Error code indicating that a Cloud Code script failed.\n * @constant\n */\n SCRIPT_FAILED: 141,\n\n /**\n * Error code indicating that a Cloud Code validation failed.\n * @constant\n */\n VALIDATION_ERROR: 142,\n\n /**\n * Error code indicating that invalid image data was provided.\n * @constant\n */\n INVALID_IMAGE_DATA: 150,\n\n /**\n * Error code indicating an unsaved file.\n * @constant\n */\n UNSAVED_FILE_ERROR: 151,\n\n /**\n * Error code indicating an invalid push time.\n */\n INVALID_PUSH_TIME_ERROR: 152,\n\n /**\n * Error code indicating that the username is missing or empty.\n * @constant\n */\n USERNAME_MISSING: 200,\n\n /**\n * Error code indicating that the password is missing or empty.\n * @constant\n */\n PASSWORD_MISSING: 201,\n\n /**\n * Error code indicating that the username has already been taken.\n * @constant\n */\n USERNAME_TAKEN: 202,\n\n /**\n * Error code indicating that the email has already been taken.\n * @constant\n */\n EMAIL_TAKEN: 203,\n\n /**\n * Error code indicating that the email is missing, but must be specified.\n * @constant\n */\n EMAIL_MISSING: 204,\n\n /**\n * Error code indicating that a user with the specified email was not found.\n * @constant\n */\n EMAIL_NOT_FOUND: 205,\n\n /**\n * Error code indicating that a user object without a valid session could\n * not be altered.\n * @constant\n */\n SESSION_MISSING: 206,\n\n /**\n * Error code indicating that a user can only be created through signup.\n * @constant\n */\n MUST_CREATE_USER_THROUGH_SIGNUP: 207,\n\n /**\n * Error code indicating that an an account being linked is already linked\n * to another user.\n * @constant\n */\n ACCOUNT_ALREADY_LINKED: 208,\n\n /**\n * Error code indicating that a user cannot be linked to an account because\n * that account's id could not be found.\n * @constant\n */\n LINKED_ID_MISSING: 250,\n\n /**\n * Error code indicating that a user with a linked (e.g. Facebook) account\n * has an invalid session.\n * @constant\n */\n INVALID_LINKED_SESSION: 251,\n\n /**\n * Error code indicating that a service being linked (e.g. Facebook or\n * Twitter) is unsupported.\n * @constant\n */\n UNSUPPORTED_SERVICE: 252,\n /**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n * @constant\n */\n X_DOMAIN_REQUEST: 602,\n }\n);\n\nmodule.exports = AVError;\n\n\n\n// WEBPACK FOOTER //\n// ./src/error.js","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iterators.js\n// module id = 30\n// module chunks = 0 1","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/values.js\n// module id = 31\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_flatten.js\n// module id = 32\n// module chunks = 0 1","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/map.js\n// module id = 33\n// module chunks = 0 1","const _ = require('underscore');\nconst uuid = require('uuid/v4');\nconst debug = require('debug');\nconst { inherits, parseDate } = require('./utils');\nconst version = require('./version');\nconst { setAdapters, adapterManager } = require('./adapter');\n\nconst AV = global.AV || {};\n\n// All internal configuration items\nAV._config = {\n serverURLs: {},\n useMasterKey: false,\n production: null,\n realtime: null,\n requestTimeout: null,\n};\n\nconst initialUserAgent = `LeanCloud-JS-SDK/${version}`;\n\n// configs shared by all AV instances\nAV._sharedConfig = {\n userAgent: initialUserAgent,\n liveQueryRealtime: null,\n};\n\nadapterManager.on('platformInfo', platformInfo => {\n let ua = initialUserAgent;\n if (platformInfo) {\n if (platformInfo.userAgent) {\n ua = platformInfo.userAgent;\n } else {\n let comments = platformInfo.name;\n if (platformInfo.version) {\n comments += `/${platformInfo.version}`;\n }\n if (platformInfo.extra) {\n comments += `; ${platformInfo.extra}`;\n }\n ua += ` (${comments})`;\n }\n }\n AV._sharedConfig.userAgent = ua;\n});\n\n/**\n * Contains all AV API classes and functions.\n * @namespace AV\n */\n\n/**\n * Returns prefix for localStorage keys used by this instance of AV.\n * @param {String} path The relative suffix to append to it.\n * null or undefined is treated as the empty string.\n * @return {String} The full key name.\n * @private\n */\nAV._getAVPath = function(path) {\n if (!AV.applicationId) {\n throw new Error('You need to call AV.initialize before using AV.');\n }\n if (!path) {\n path = '';\n }\n if (!_.isString(path)) {\n throw new Error(\"Tried to get a localStorage path that wasn't a String.\");\n }\n if (path[0] === '/') {\n path = path.substring(1);\n }\n return 'AV/' + AV.applicationId + '/' + path;\n};\n\n/**\n * Returns the unique string for this app on this machine.\n * Gets reset when localStorage is cleared.\n * @private\n */\nAV._installationId = null;\nAV._getInstallationId = () => {\n // See if it's cached in RAM.\n if (AV._installationId) {\n return Promise.resolve(AV._installationId);\n }\n\n // Try to get it from localStorage.\n const path = AV._getAVPath('installationId');\n return AV.localStorage.getItemAsync(path).then(_installationId => {\n AV._installationId = _installationId;\n if (!AV._installationId) {\n // It wasn't in localStorage, so create a new one.\n AV._installationId = _installationId = uuid();\n return AV.localStorage\n .setItemAsync(path, _installationId)\n .then(() => _installationId);\n }\n return _installationId;\n });\n};\n\nAV._subscriptionId = null;\nAV._refreshSubscriptionId = (path = AV._getAVPath('subscriptionId')) => {\n const subscriptionId = (AV._subscriptionId = uuid());\n return AV.localStorage\n .setItemAsync(path, subscriptionId)\n .then(() => subscriptionId);\n};\nAV._getSubscriptionId = () => {\n // See if it's cached in RAM.\n if (AV._subscriptionId) {\n return Promise.resolve(AV._subscriptionId);\n }\n\n // Try to get it from localStorage.\n const path = AV._getAVPath('subscriptionId');\n return AV.localStorage.getItemAsync(path).then(_subscriptionId => {\n AV._subscriptionId = _subscriptionId;\n if (!AV._subscriptionId) {\n // It wasn't in localStorage, so create a new one.\n _subscriptionId = AV._refreshSubscriptionId(path);\n }\n return _subscriptionId;\n });\n};\n\nAV._parseDate = parseDate;\n\n// A self-propagating extend function.\nAV._extend = function(protoProps, classProps) {\n var child = inherits(this, protoProps, classProps);\n child.extend = this.extend;\n return child;\n};\n\n/**\n * Converts a value in a AV Object into the appropriate representation.\n * This is the JS equivalent of Java's AV.maybeReferenceAndEncode(Object)\n * if seenObjects is falsey. Otherwise any AV.Objects not in\n * seenObjects will be fully embedded rather than encoded\n * as a pointer. This array will be used to prevent going into an infinite\n * loop because we have circular references. If <seenObjects>\n * is set, then none of the AV Objects that are serialized can be dirty.\n * @private\n */\nAV._encode = function(value, seenObjects, disallowObjects, full = true) {\n if (value instanceof AV.Object) {\n if (disallowObjects) {\n throw new Error('AV.Objects not allowed here');\n }\n if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {\n return value._toPointer();\n }\n return value._toFullJSON(seenObjects.concat(value), full);\n }\n if (value instanceof AV.ACL) {\n return value.toJSON();\n }\n if (_.isDate(value)) {\n return full ? { __type: 'Date', iso: value.toJSON() } : value.toJSON();\n }\n if (value instanceof AV.GeoPoint) {\n return value.toJSON();\n }\n if (_.isArray(value)) {\n return _.map(value, function(x) {\n return AV._encode(x, seenObjects, disallowObjects, full);\n });\n }\n if (_.isRegExp(value)) {\n return value.source;\n }\n if (value instanceof AV.Relation) {\n return value.toJSON();\n }\n if (value instanceof AV.Op) {\n return value.toJSON();\n }\n if (value instanceof AV.File) {\n if (!value.url() && !value.id) {\n throw new Error('Tried to save an object containing an unsaved file.');\n }\n return value._toFullJSON(seenObjects, full);\n }\n if (_.isObject(value)) {\n return _.mapObject(value, (v, k) =>\n AV._encode(v, seenObjects, disallowObjects, full)\n );\n }\n return value;\n};\n\n/**\n * The inverse function of AV._encode.\n * @private\n */\nAV._decode = function(value, key) {\n if (!_.isObject(value) || _.isDate(value)) {\n return value;\n }\n if (_.isArray(value)) {\n return _.map(value, v => AV._decode(v));\n }\n if (value instanceof AV.Object) {\n return value;\n }\n if (value instanceof AV.File) {\n return value;\n }\n if (value instanceof AV.Op) {\n return value;\n }\n if (value instanceof AV.GeoPoint) {\n return value;\n }\n if (value instanceof AV.ACL) {\n return value;\n }\n if (key === 'ACL') {\n return new AV.ACL(value);\n }\n if (value.__op) {\n return AV.Op._decode(value);\n }\n var className;\n if (value.__type === 'Pointer') {\n className = value.className;\n var pointer = AV.Object._create(className);\n if (Object.keys(value).length > 3) {\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n pointer._finishFetch(v, true);\n } else {\n pointer._finishFetch({ objectId: value.objectId }, false);\n }\n return pointer;\n }\n if (value.__type === 'Object') {\n // It's an Object included in a query result.\n className = value.className;\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n var object = AV.Object._create(className);\n object._finishFetch(v, true);\n return object;\n }\n if (value.__type === 'Date') {\n return AV._parseDate(value.iso);\n }\n if (value.__type === 'GeoPoint') {\n return new AV.GeoPoint({\n latitude: value.latitude,\n longitude: value.longitude,\n });\n }\n if (value.__type === 'Relation') {\n if (!key) throw new Error('key missing decoding a Relation');\n var relation = new AV.Relation(null, key);\n relation.targetClassName = value.className;\n return relation;\n }\n if (value.__type === 'File') {\n var file = new AV.File(value.name);\n const v = _.clone(value);\n delete v.__type;\n file._finishFetch(v);\n return file;\n }\n return _.mapObject(value, AV._decode);\n};\n\n/**\n * The inverse function of {@link AV.Object#toFullJSON}.\n * @since 3.0.0\n * @method\n * @param {Object}\n * return {AV.Object|AV.File|any}\n */\nAV.parseJSON = AV._decode;\n\n/**\n * Similar to JSON.parse, except that AV internal types will be used if possible.\n * Inverse to {@link AV.stringify}\n * @since 3.14.0\n * @param {string} text the string to parse.\n * @return {AV.Object|AV.File|any}\n */\nAV.parse = text => AV.parseJSON(JSON.parse(text));\n/**\n * Serialize a target containing AV.Object, similar to JSON.stringify.\n * Inverse to {@link AV.parse}\n * @since 3.14.0\n * @return {string}\n */\nAV.stringify = target => JSON.stringify(AV._encode(target, [], false, true));\n\nAV._encodeObjectOrArray = function(value) {\n var encodeAVObject = function(object) {\n if (object && object._toFullJSON) {\n object = object._toFullJSON([]);\n }\n\n return _.mapObject(object, function(value) {\n return AV._encode(value, []);\n });\n };\n\n if (_.isArray(value)) {\n return value.map(function(object) {\n return encodeAVObject(object);\n });\n } else {\n return encodeAVObject(value);\n }\n};\n\nAV._arrayEach = _.each;\n\n/**\n * Does a deep traversal of every item in object, calling func on every one.\n * @param {Object} object The object or array to traverse deeply.\n * @param {Function} func The function to call for every item. It will\n * be passed the item as an argument. If it returns a truthy value, that\n * value will replace the item in its parent container.\n * @returns {} the result of calling func on the top-level object itself.\n * @private\n */\nAV._traverse = function(object, func, seen) {\n if (object instanceof AV.Object) {\n seen = seen || [];\n if (_.indexOf(seen, object) >= 0) {\n // We've already visited this object in this call.\n return;\n }\n seen.push(object);\n AV._traverse(object.attributes, func, seen);\n return func(object);\n }\n if (object instanceof AV.Relation || object instanceof AV.File) {\n // Nothing needs to be done, but we don't want to recurse into the\n // object's parent infinitely, so we catch this case.\n return func(object);\n }\n if (_.isArray(object)) {\n _.each(object, function(child, index) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[index] = newChild;\n }\n });\n return func(object);\n }\n if (_.isObject(object)) {\n AV._each(object, function(child, key) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[key] = newChild;\n }\n });\n return func(object);\n }\n return func(object);\n};\n\n/**\n * This is like _.each, except:\n * * it doesn't work for so-called array-like objects,\n * * it does work for dictionaries with a \"length\" attribute.\n * @private\n */\nAV._objectEach = AV._each = function(obj, callback) {\n if (_.isObject(obj)) {\n _.each(_.keys(obj), function(key) {\n callback(obj[key], key);\n });\n } else {\n _.each(obj, callback);\n }\n};\n\n/**\n * @namespace\n * @since 3.14.0\n */\nAV.debug = {\n /**\n * Enable debug\n */\n enable: (namespaces = 'leancloud*') => debug.enable(namespaces),\n /**\n * Disable debug\n */\n disable: debug.disable,\n};\n\n/**\n * Specify Adapters\n * @since 4.4.0\n * @function\n * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions.\n */\nAV.setAdapters = setAdapters;\n\nmodule.exports = AV;\n\n\n\n// WEBPACK FOOTER //\n// ./src/av.js","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/browser.js\n// module id = 35\n// module chunks = 0 1","const _ = require('underscore');\nconst EventEmitter = require('eventemitter3');\nconst { inherits } = require('./utils');\n\nconst AdapterManager = inherits(EventEmitter, {\n constructor() {\n EventEmitter.apply(this);\n this._adapters = {};\n },\n getAdapter(name) {\n const adapter = this._adapters[name];\n if (adapter === undefined) {\n throw new Error(`${name} adapter is not configured`);\n }\n return adapter;\n },\n setAdapters(newAdapters) {\n _.extend(this._adapters, newAdapters);\n _.keys(newAdapters).forEach(name => this.emit(name, newAdapters[name]));\n },\n});\n\nconst adapterManager = new AdapterManager();\n\nmodule.exports = {\n getAdapter: adapterManager.getAdapter.bind(adapterManager),\n setAdapters: adapterManager.setAdapters.bind(adapterManager),\n adapterManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/adapter.js","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_library.js\n// module id = 37\n// module chunks = 0 1","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_ctx.js\n// module id = 38\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_fails.js\n// module id = 39\n// module chunks = 0 1","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_cof.js\n// module id = 40\n// module chunks = 0 1","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_stringTagBug.js\n// module id = 41\n// module chunks = 0 1","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/allKeys.js\n// module id = 42\n// module chunks = 0 1","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_toPath.js\n// module id = 43\n// module chunks = 0 1","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_optimizeCb.js\n// module id = 44\n// module chunks = 0 1","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/filter.js\n// module id = 45\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/contains.js\n// module id = 46\n// module chunks = 0 1","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.string.iterator.js\n// module id = 47\n// module chunks = 0 1","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_a-function.js\n// module id = 48\n// module chunks = 0 1","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_property-desc.js\n// module id = 49\n// module chunks = 0 1","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-keys.js\n// module id = 50\n// module chunks = 0 1","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_uid.js\n// module id = 51\n// module chunks = 0 1","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-to-string-tag.js\n// module id = 52\n// module chunks = 0 1","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-object.js\n// module id = 53\n// module chunks = 0 1","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/web.dom.iterable.js\n// module id = 54\n// module chunks = 0 1","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/matcher.js\n// module id = 55\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/partial.js\n// module id = 56\n// module chunks = 0 1","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_group.js\n// module id = 57\n// module chunks = 0 1","const _ = require('underscore');\nconst { timeout } = require('promise-timeout');\nconst debug = require('debug');\nconst debugRequest = debug('leancloud:request');\nconst debugRequestError = debug('leancloud:request:error');\nconst { getAdapter } = require('../adapter');\n\nlet requestsCount = 0;\n\nconst ajax = ({\n method,\n url,\n query,\n data,\n headers = {},\n timeout: time,\n onprogress,\n}) => {\n if (query) {\n const queryString = Object.keys(query)\n .map(key => {\n const value = query[key];\n if (value === undefined) return undefined;\n const v = typeof value === 'object' ? JSON.stringify(value) : value;\n return `${encodeURIComponent(key)}=${encodeURIComponent(v)}`;\n })\n .filter(qs => qs)\n .join('&');\n url = `${url}?${queryString}`;\n }\n\n const count = requestsCount++;\n debugRequest(\n 'request(%d) %s %s %o %o %o',\n count,\n method,\n url,\n query,\n data,\n headers\n );\n\n const request = getAdapter('request');\n const promise = request(url, { method, headers, data, onprogress })\n .then(response => {\n debugRequest(\n 'response(%d) %d %O %o',\n count,\n response.status,\n response.data || response.text,\n response.header\n );\n if (response.ok === false) {\n const error = new Error();\n error.response = response;\n throw error;\n }\n return response.data;\n })\n .catch(error => {\n if (error.response) {\n if (!debug.enabled('leancloud:request')) {\n debugRequestError(\n 'request(%d) %s %s %o %o %o',\n count,\n method,\n url,\n query,\n data,\n headers\n );\n }\n debugRequestError(\n 'response(%d) %d %O %o',\n count,\n error.response.status,\n error.response.data || error.response.text,\n error.response.header\n );\n error.statusCode = error.response.status;\n error.responseText = error.response.text;\n error.response = error.response.data;\n }\n throw error;\n });\n return time ? timeout(promise, time) : promise;\n};\n\nmodule.exports = ajax;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ajax.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/typeof.js\n// module id = 59\n// module chunks = 0 1","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-integer.js\n// module id = 60\n// module chunks = 0 1","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_defined.js\n// module id = 61\n// module chunks = 0 1","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_dom-create.js\n// module id = 62\n// module chunks = 0 1","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-primitive.js\n// module id = 63\n// module chunks = 0 1","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-create.js\n// module id = 64\n// module chunks = 0 1","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_shared-key.js\n// module id = 65\n// module chunks = 0 1","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_shared.js\n// module id = 66\n// module chunks = 0 1","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_enum-bug-keys.js\n// module id = 67\n// module chunks = 0 1","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_classof.js\n// module id = 68\n// module chunks = 0 1","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_new-promise-capability.js\n// module id = 69\n// module chunks = 0 1","// Named Exports\n// =============\n\n// Underscore.js 1.12.1\n// https://underscorejs.org\n// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n// Baseline setup.\nexport { VERSION } from './_setup.js';\nexport { default as restArguments } from './restArguments.js';\n\n// Object Functions\n// ----------------\n// Our most fundamental functions operate on any JavaScript object.\n// Most functions in Underscore depend on at least one function in this section.\n\n// A group of functions that check the types of core JavaScript values.\n// These are often informally referred to as the \"isType\" functions.\nexport { default as isObject } from './isObject.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isString } from './isString.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isError } from './isError.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isDataView } from './isDataView.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isWeakSet } from './isWeakSet.js';\n\n// Functions that treat an object as a dictionary of key-value pairs.\nexport { default as keys } from './keys.js';\nexport { default as allKeys } from './allKeys.js';\nexport { default as values } from './values.js';\nexport { default as pairs } from './pairs.js';\nexport { default as invert } from './invert.js';\nexport { default as functions,\n default as methods } from './functions.js';\nexport { default as extend } from './extend.js';\nexport { default as extendOwn,\n default as assign } from './extendOwn.js';\nexport { default as defaults } from './defaults.js';\nexport { default as create } from './create.js';\nexport { default as clone } from './clone.js';\nexport { default as tap } from './tap.js';\nexport { default as get } from './get.js';\nexport { default as has } from './has.js';\nexport { default as mapObject } from './mapObject.js';\n\n// Utility Functions\n// -----------------\n// A bit of a grab bag: Predicate-generating functions for use with filters and\n// loops, string escaping and templating, create random numbers and unique ids,\n// and functions that facilitate Underscore's chaining and iteration conventions.\nexport { default as identity } from './identity.js';\nexport { default as constant } from './constant.js';\nexport { default as noop } from './noop.js';\nexport { default as toPath } from './toPath.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as matcher,\n default as matches } from './matcher.js';\nexport { default as times } from './times.js';\nexport { default as random } from './random.js';\nexport { default as now } from './now.js';\nexport { default as escape } from './escape.js';\nexport { default as unescape } from './unescape.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as template } from './template.js';\nexport { default as result } from './result.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as chain } from './chain.js';\nexport { default as iteratee } from './iteratee.js';\n\n// Function (ahem) Functions\n// -------------------------\n// These functions take a function as an argument and return a new function\n// as the result. Also known as higher-order functions.\nexport { default as partial } from './partial.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as memoize } from './memoize.js';\nexport { default as delay } from './delay.js';\nexport { default as defer } from './defer.js';\nexport { default as throttle } from './throttle.js';\nexport { default as debounce } from './debounce.js';\nexport { default as wrap } from './wrap.js';\nexport { default as negate } from './negate.js';\nexport { default as compose } from './compose.js';\nexport { default as after } from './after.js';\nexport { default as before } from './before.js';\nexport { default as once } from './once.js';\n\n// Finders\n// -------\n// Functions that extract (the position of) a single element from an object\n// or array based on some criterion.\nexport { default as findKey } from './findKey.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as find,\n default as detect } from './find.js';\nexport { default as findWhere } from './findWhere.js';\n\n// Collection Functions\n// --------------------\n// Functions that work on any collection of elements: either an array, or\n// an object of key-value pairs.\nexport { default as each,\n default as forEach } from './each.js';\nexport { default as map,\n default as collect } from './map.js';\nexport { default as reduce,\n default as foldl,\n default as inject } from './reduce.js';\nexport { default as reduceRight,\n default as foldr } from './reduceRight.js';\nexport { default as filter,\n default as select } from './filter.js';\nexport { default as reject } from './reject.js';\nexport { default as every,\n default as all } from './every.js';\nexport { default as some,\n default as any } from './some.js';\nexport { default as contains,\n default as includes,\n default as include } from './contains.js';\nexport { default as invoke } from './invoke.js';\nexport { default as pluck } from './pluck.js';\nexport { default as where } from './where.js';\nexport { default as max } from './max.js';\nexport { default as min } from './min.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as sample } from './sample.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as indexBy } from './indexBy.js';\nexport { default as countBy } from './countBy.js';\nexport { default as partition } from './partition.js';\nexport { default as toArray } from './toArray.js';\nexport { default as size } from './size.js';\n\n// `_.pick` and `_.omit` are actually object functions, but we put\n// them here in order to create a more natural reading order in the\n// monolithic build as they depend on `_.contains`.\nexport { default as pick } from './pick.js';\nexport { default as omit } from './omit.js';\n\n// Array Functions\n// ---------------\n// Functions that operate on arrays (and array-likes) only, because they’re\n// expressed in terms of operations on an ordered list of values.\nexport { default as first,\n default as head,\n default as take } from './first.js';\nexport { default as initial } from './initial.js';\nexport { default as last } from './last.js';\nexport { default as rest,\n default as tail,\n default as drop } from './rest.js';\nexport { default as compact } from './compact.js';\nexport { default as flatten } from './flatten.js';\nexport { default as without } from './without.js';\nexport { default as uniq,\n default as unique } from './uniq.js';\nexport { default as union } from './union.js';\nexport { default as intersection } from './intersection.js';\nexport { default as difference } from './difference.js';\nexport { default as unzip,\n default as transpose } from './unzip.js';\nexport { default as zip } from './zip.js';\nexport { default as object } from './object.js';\nexport { default as range } from './range.js';\nexport { default as chunk } from './chunk.js';\n\n// OOP\n// ---\n// These modules support the \"object-oriented\" calling style. See also\n// `underscore.js` and `index-default.js`.\nexport { default as mixin } from './mixin.js';\nexport { default } from './underscore-array-methods.js';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index.js\n// module id = 70\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isString.js\n// module id = 71\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isDataView.js\n// module id = 72\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArguments.js\n// module id = 73\n// module chunks = 0 1","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_getByteLength.js\n// module id = 74\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_methodFingerprint.js\n// module id = 75\n// module chunks = 0 1","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createAssigner.js\n// module id = 76\n// module chunks = 0 1","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/extendOwn.js\n// module id = 77\n// module chunks = 0 1","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_deepGet.js\n// module id = 78\n// module chunks = 0 1","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/identity.js\n// module id = 79\n// module chunks = 0 1","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/property.js\n// module id = 80\n// module chunks = 0 1","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/now.js\n// module id = 81\n// module chunks = 0 1","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/negate.js\n// module id = 82\n// module chunks = 0 1","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findIndex.js\n// module id = 83\n// module chunks = 0 1","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pluck.js\n// module id = 84\n// module chunks = 0 1","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-sap.js\n// module id = 85\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/define-property.js\n// module id = 86\n// module chunks = 0 1","exports.f = require('./_wks');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks-ext.js\n// module id = 87\n// module chunks = 0 1","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks-define.js\n// module id = 88\n// module chunks = 0 1","exports.f = {}.propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-pie.js\n// module id = 89\n// module chunks = 0 1","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopd.js\n// module id = 90\n// module chunks = 0 1","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-define.js\n// module id = 92\n// module chunks = 0 1","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_ie8-dom-define.js\n// module id = 93\n// module chunks = 0 1","module.exports = require('./_hide');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_redefine.js\n// module id = 94\n// module chunks = 0 1","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-keys-internal.js\n// module id = 95\n// module chunks = 0 1","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-length.js\n// module id = 96\n// module chunks = 0 1","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_html.js\n// module id = 97\n// module chunks = 0 1","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gpo.js\n// module id = 98\n// module chunks = 0 1","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/core.get-iterator-method.js\n// module id = 99\n// module chunks = 0 1","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_species-constructor.js\n// module id = 100\n// module chunks = 0 1","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_task.js\n// module id = 101\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_perform.js\n// module id = 102\n// module chunks = 0 1","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_promise-resolve.js\n// module id = 103\n// module chunks = 0 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 104\n// module chunks = 0 1","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isUndefined.js\n// module id = 105\n// module chunks = 0 1","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isBoolean.js\n// module id = 106\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNumber.js\n// module id = 107\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isSymbol.js\n// module id = 108\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArrayBuffer.js\n// module id = 109\n// module chunks = 0 1","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNaN.js\n// module id = 110\n// module chunks = 0 1","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isTypedArray.js\n// module id = 111\n// module chunks = 0 1","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/constant.js\n// module id = 112\n// module chunks = 0 1","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createSizePropertyCheck.js\n// module id = 113\n// module chunks = 0 1","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_shallowProperty.js\n// module id = 114\n// module chunks = 0 1","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_collectNonEnumProps.js\n// module id = 115\n// module chunks = 0 1","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isMatch.js\n// module id = 116\n// module chunks = 0 1","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/invert.js\n// module id = 117\n// module chunks = 0 1","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/functions.js\n// module id = 118\n// module chunks = 0 1","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/extend.js\n// module id = 119\n// module chunks = 0 1","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/defaults.js\n// module id = 120\n// module chunks = 0 1","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_baseCreate.js\n// module id = 121\n// module chunks = 0 1","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/clone.js\n// module id = 122\n// module chunks = 0 1","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/get.js\n// module id = 123\n// module chunks = 0 1","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/toPath.js\n// module id = 124\n// module chunks = 0 1","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_baseIteratee.js\n// module id = 125\n// module chunks = 0 1","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/iteratee.js\n// module id = 126\n// module chunks = 0 1","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/noop.js\n// module id = 127\n// module chunks = 0 1","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/random.js\n// module id = 128\n// module chunks = 0 1","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createEscaper.js\n// module id = 129\n// module chunks = 0 1","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;'\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_escapeMap.js\n// module id = 130\n// module chunks = 0 1","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/templateSettings.js\n// module id = 131\n// module chunks = 0 1","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_executeBound.js\n// module id = 132\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/bind.js\n// module id = 133\n// module chunks = 0 1","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/delay.js\n// module id = 134\n// module chunks = 0 1","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/before.js\n// module id = 135\n// module chunks = 0 1","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findKey.js\n// module id = 136\n// module chunks = 0 1","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createPredicateIndexFinder.js\n// module id = 137\n// module chunks = 0 1","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findLastIndex.js\n// module id = 138\n// module chunks = 0 1","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sortedIndex.js\n// module id = 139\n// module chunks = 0 1","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/indexOf.js\n// module id = 140\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createIndexFinder.js\n// module id = 141\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/find.js\n// module id = 142\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createReduce.js\n// module id = 143\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/max.js\n// module id = 144\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sample.js\n// module id = 145\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pick.js\n// module id = 146\n// module chunks = 0 1","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/initial.js\n// module id = 147\n// module chunks = 0 1","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/rest.js\n// module id = 148\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/difference.js\n// module id = 149\n// module chunks = 0 1","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/uniq.js\n// module id = 150\n// module chunks = 0 1","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/unzip.js\n// module id = 151\n// module chunks = 0 1","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_chainResult.js\n// module id = 152\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/keys.js\n// module id = 153\n// module chunks = 0 1","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/v4.js\n// module id = 154\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/get-prototype-of.js\n// module id = 155\n// module chunks = 0 1","module.exports = '4.12.2';\n\n\n\n// WEBPACK FOOTER //\n// ./src/version.js","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/eventemitter3/index.js\n// module id = 157\n// module chunks = 0 1","var { getAdapter } = require('./adapter');\n\nvar syncApiNames = ['getItem', 'setItem', 'removeItem', 'clear'];\n\nconst localStorage = {\n get async() {\n return getAdapter('storage').async;\n },\n};\n\n// wrap sync apis with async ones.\nsyncApiNames.forEach(function(apiName) {\n localStorage[apiName + 'Async'] = function() {\n const storage = getAdapter('storage');\n return Promise.resolve(storage[apiName].apply(storage, arguments));\n };\n\n localStorage[apiName] = function() {\n const storage = getAdapter('storage');\n if (!storage.async) {\n return storage[apiName].apply(storage, arguments);\n }\n const error = new Error(\n 'Synchronous API [' + apiName + '] is not available in this runtime.'\n );\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n };\n});\n\nmodule.exports = localStorage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/localstorage.js","const storage = require('./localstorage');\nconst AV = require('./av');\n\nconst removeAsync = (exports.removeAsync = storage.removeItemAsync.bind(\n storage\n));\n\nconst getCacheData = (cacheData, key) => {\n try {\n cacheData = JSON.parse(cacheData);\n } catch (e) {\n return null;\n }\n if (cacheData) {\n const expired = cacheData.expiredAt && cacheData.expiredAt < Date.now();\n if (!expired) {\n return cacheData.value;\n }\n return removeAsync(key).then(() => null);\n }\n return null;\n};\n\nexports.getAsync = key => {\n key = `AV/${AV.applicationId}/${key}`;\n return storage.getItemAsync(key).then(cache => getCacheData(cache, key));\n};\n\nexports.setAsync = (key, value, ttl) => {\n const cache = { value };\n if (typeof ttl === 'number') {\n cache.expiredAt = Date.now() + ttl;\n }\n return storage.setItemAsync(\n `AV/${AV.applicationId}/${key}`,\n JSON.stringify(cache)\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/cache.js","exports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gops.js\n// module id = 160\n// module chunks = 0 1","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopn.js\n// module id = 161\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/get-iterator.js\n// module id = 162\n// module chunks = 0 1","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/charenc/charenc.js\n// module id = 163\n// module chunks = 0 1","module.exports = require('../index');\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/core.js","/*!\n * LeanCloud JavaScript SDK\n * https://leancloud.cn\n *\n * Copyright 2016 LeanCloud.cn, Inc.\n * The LeanCloud JavaScript SDK is freely distributable under the MIT license.\n */\nconst _ = require('underscore');\n\nconst AV = require('./av');\n\nAV._ = _;\nAV.version = require('./version');\nAV.Promise = Promise;\nAV.localStorage = require('./localstorage');\nAV.Cache = require('./cache');\nAV.Error = require('./error');\n\nrequire('./init');\nrequire('./event')(AV);\nrequire('./geopoint')(AV);\nrequire('./acl')(AV);\nrequire('./op')(AV);\nrequire('./relation')(AV);\nrequire('./file')(AV);\nrequire('./object')(AV);\nrequire('./role')(AV);\nrequire('./user')(AV);\nrequire('./query')(AV);\nrequire('./live-query')(AV);\nrequire('./captcha')(AV);\nrequire('./cloudfunction')(AV);\nrequire('./push')(AV);\nrequire('./status')(AV);\nrequire('./search')(AV);\nrequire('./insight')(AV);\nrequire('./friendship')(AV);\n\nAV.Conversation = require('./conversation');\nrequire('./leaderboard');\nmodule.exports = AV;\n\n/**\n * Options to controll the authentication for an operation\n * @typedef {Object} AuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n */\n\n/**\n * Options to controll the authentication for an SMS operation\n * @typedef {Object} SMSAuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha}\n */\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/promise.js\n// module id = 166\n// module chunks = 0 1","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_string-at.js\n// module id = 167\n// module chunks = 0 1","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-create.js\n// module id = 168\n// module chunks = 0 1","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-dps.js\n// module id = 169\n// module chunks = 0 1","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iobject.js\n// module id = 170\n// module chunks = 0 1","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_array-includes.js\n// module id = 171\n// module chunks = 0 1","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-absolute-index.js\n// module id = 172\n// module chunks = 0 1","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.array.iterator.js\n// module id = 173\n// module chunks = 0 1","module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_add-to-unscopables.js\n// module id = 174\n// module chunks = 0 1","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-step.js\n// module id = 175\n// module chunks = 0 1","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.promise.js\n// module id = 176\n// module chunks = 0 1","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_an-instance.js\n// module id = 177\n// module chunks = 0 1","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_for-of.js\n// module id = 178\n// module chunks = 0 1","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-call.js\n// module id = 179\n// module chunks = 0 1","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-array-iter.js\n// module id = 180\n// module chunks = 0 1","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_invoke.js\n// module id = 181\n// module chunks = 0 1","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_microtask.js\n// module id = 182\n// module chunks = 0 1","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_user-agent.js\n// module id = 183\n// module chunks = 0 1","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_redefine-all.js\n// module id = 184\n// module chunks = 0 1","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-species.js\n// module id = 185\n// module chunks = 0 1","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-detect.js\n// module id = 186\n// module chunks = 0 1","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.promise.finally.js\n// module id = 187\n// module chunks = 0 1","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.promise.try.js\n// module id = 188\n// module chunks = 0 1","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index-default.js\n// module id = 189\n// module chunks = 0 1","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNull.js\n// module id = 190\n// module chunks = 0 1","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isElement.js\n// module id = 191\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isDate.js\n// module id = 192\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isRegExp.js\n// module id = 193\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isError.js\n// module id = 194\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_hasObjectTag.js\n// module id = 195\n// module chunks = 0 1","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFinite.js\n// module id = 196\n// module chunks = 0 1","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_isBufferLike.js\n// module id = 197\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isEmpty.js\n// module id = 198\n// module chunks = 0 1","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isEqual.js\n// module id = 199\n// module chunks = 0 1","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_toBufferView.js\n// module id = 200\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isMap.js\n// module id = 201\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isWeakMap.js\n// module id = 202\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isSet.js\n// module id = 203\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isWeakSet.js\n// module id = 204\n// module chunks = 0 1","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pairs.js\n// module id = 205\n// module chunks = 0 1","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/create.js\n// module id = 206\n// module chunks = 0 1","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/tap.js\n// module id = 207\n// module chunks = 0 1","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/has.js\n// module id = 208\n// module chunks = 0 1","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/mapObject.js\n// module id = 209\n// module chunks = 0 1","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/propertyOf.js\n// module id = 210\n// module chunks = 0 1","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/times.js\n// module id = 211\n// module chunks = 0 1","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/escape.js\n// module id = 212\n// module chunks = 0 1","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/unescape.js\n// module id = 213\n// module chunks = 0 1","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_unescapeMap.js\n// module id = 214\n// module chunks = 0 1","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n if (!bareIdentifier.test(argument)) throw new Error(argument);\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/template.js\n// module id = 215\n// module chunks = 0 1","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/result.js\n// module id = 216\n// module chunks = 0 1","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/uniqueId.js\n// module id = 217\n// module chunks = 0 1","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/chain.js\n// module id = 218\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/bindAll.js\n// module id = 219\n// module chunks = 0 1","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/memoize.js\n// module id = 220\n// module chunks = 0 1","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/defer.js\n// module id = 221\n// module chunks = 0 1","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/throttle.js\n// module id = 222\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/debounce.js\n// module id = 223\n// module chunks = 0 1","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/wrap.js\n// module id = 224\n// module chunks = 0 1","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/compose.js\n// module id = 225\n// module chunks = 0 1","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/after.js\n// module id = 226\n// module chunks = 0 1","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/once.js\n// module id = 227\n// module chunks = 0 1","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/lastIndexOf.js\n// module id = 228\n// module chunks = 0 1","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findWhere.js\n// module id = 229\n// module chunks = 0 1","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reduce.js\n// module id = 230\n// module chunks = 0 1","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reduceRight.js\n// module id = 231\n// module chunks = 0 1","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reject.js\n// module id = 232\n// module chunks = 0 1","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/every.js\n// module id = 233\n// module chunks = 0 1","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/some.js\n// module id = 234\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/invoke.js\n// module id = 235\n// module chunks = 0 1","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/where.js\n// module id = 236\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/min.js\n// module id = 237\n// module chunks = 0 1","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/shuffle.js\n// module id = 238\n// module chunks = 0 1","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sortBy.js\n// module id = 239\n// module chunks = 0 1","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/groupBy.js\n// module id = 240\n// module chunks = 0 1","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/indexBy.js\n// module id = 241\n// module chunks = 0 1","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/countBy.js\n// module id = 242\n// module chunks = 0 1","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/partition.js\n// module id = 243\n// module chunks = 0 1","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/toArray.js\n// module id = 244\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/size.js\n// module id = 245\n// module chunks = 0 1","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_keyInObj.js\n// module id = 246\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/omit.js\n// module id = 247\n// module chunks = 0 1","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/first.js\n// module id = 248\n// module chunks = 0 1","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/last.js\n// module id = 249\n// module chunks = 0 1","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/compact.js\n// module id = 250\n// module chunks = 0 1","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/flatten.js\n// module id = 251\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/without.js\n// module id = 252\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/union.js\n// module id = 253\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/intersection.js\n// module id = 254\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/zip.js\n// module id = 255\n// module chunks = 0 1","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/object.js\n// module id = 256\n// module chunks = 0 1","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/range.js\n// module id = 257\n// module chunks = 0 1","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/chunk.js\n// module id = 258\n// module chunks = 0 1","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/mixin.js\n// module id = 259\n// module chunks = 0 1","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/underscore-array-methods.js\n// module id = 260\n// module chunks = 0 1","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/json/stringify.js\n// module id = 261\n// module chunks = 0 1","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/keys.js\n// module id = 262\n// module chunks = 0 1","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.keys.js\n// module id = 263\n// module chunks = 0 1","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/rng-browser.js\n// module id = 264\n// module chunks = 0 1","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/bytesToUuid.js\n// module id = 265\n// module chunks = 0 1","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/common.js\n// module id = 266\n// module chunks = 0 1","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ms/index.js\n// module id = 267\n// module chunks = 0 1","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-prototype-of.js\n// module id = 268\n// module chunks = 0 1","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.get-prototype-of.js\n// module id = 269\n// module chunks = 0 1","const AV = require('./av');\nconst AppRouter = require('./app-router');\nconst { isNullOrUndefined } = require('./utils');\nconst { extend, isObject, isEmpty } = require('underscore');\n\nconst isCNApp = appId => appId.slice(-9) !== '-MdYXbMMI';\n\nconst fillServerURLs = url => ({\n push: url,\n stats: url,\n engine: url,\n api: url,\n rtm: url,\n});\n\nfunction getDefaultServerURLs(appId) {\n if (isCNApp(appId)) {\n return {};\n }\n const id = appId.slice(0, 8).toLowerCase();\n const domain = 'lncldglobal.com';\n return {\n push: `https://${id}.push.${domain}`,\n stats: `https://${id}.stats.${domain}`,\n engine: `https://${id}.engine.${domain}`,\n api: `https://${id}.api.${domain}`,\n rtm: `https://${id}.rtm.${domain}`,\n };\n}\n\nlet _disableAppRouter = false;\nlet _initialized = false;\n\n/**\n * URLs for services\n * @typedef {Object} ServerURLs\n * @property {String} [api] serverURL for API service\n * @property {String} [engine] serverURL for engine service\n * @property {String} [stats] serverURL for stats service\n * @property {String} [push] serverURL for push service\n * @property {String} [rtm] serverURL for LiveQuery service\n */\n\n/**\n * Call this method first to set up your authentication tokens for AV.\n * You can get your app keys from the LeanCloud dashboard on http://leancloud.cn .\n * @function AV.init\n * @param {Object} options\n * @param {String} options.appId application id\n * @param {String} options.appKey application key\n * @param {String} [options.masterKey] application master key\n * @param {Boolean} [options.production]\n * @param {String|ServerURLs} [options.serverURL] URLs for services. if a string was given, it will be applied for all services.\n * @param {Boolean} [options.disableCurrentUser]\n */\nAV.init = function init(options, ...params) {\n if (!isObject(options)) {\n return AV.init({\n appId: options,\n appKey: params[0],\n masterKey: params[1],\n });\n }\n const {\n appId,\n appKey,\n masterKey,\n hookKey,\n serverURL,\n serverURLs = serverURL,\n disableCurrentUser,\n production,\n realtime,\n } = options;\n if (_initialized)\n console.warn(\n 'Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations.'\n );\n if (!appId) throw new TypeError('appId must be a string');\n if (!appKey) throw new TypeError('appKey must be a string');\n if (process.env.PLATFORM !== 'NODE_JS' && masterKey)\n console.warn('MasterKey is not supposed to be used at client side.');\n if (isCNApp(appId)) {\n if (!serverURLs && isEmpty(AV._config.serverURLs)) {\n throw new TypeError(\n `serverURL option is required for apps from CN region`\n );\n }\n }\n if (appId !== AV._config.applicationId) {\n // overwrite all keys when reinitializing as a new app\n AV._config.masterKey = masterKey;\n AV._config.hookKey = hookKey;\n } else {\n if (masterKey) AV._config.masterKey = masterKey;\n if (hookKey) AV._config.hookKey = hookKey;\n }\n AV._config.applicationId = appId;\n AV._config.applicationKey = appKey;\n if (!isNullOrUndefined(production)) {\n AV.setProduction(production);\n }\n if (typeof disableCurrentUser !== 'undefined')\n AV._config.disableCurrentUser = disableCurrentUser;\n const disableAppRouter =\n _disableAppRouter || typeof serverURLs !== 'undefined';\n if (!disableAppRouter) {\n AV._appRouter = new AppRouter(AV);\n }\n AV._setServerURLs(\n extend(\n {},\n getDefaultServerURLs(appId),\n AV._config.serverURLs,\n typeof serverURLs === 'string' ? fillServerURLs(serverURLs) : serverURLs\n ),\n disableAppRouter\n );\n if (realtime) {\n AV._config.realtime = realtime;\n } else if (AV._sharedConfig.liveQueryRealtime) {\n const { api, rtm } = AV._config.serverURLs;\n AV._config.realtime = new AV._sharedConfig.liveQueryRealtime({\n appId,\n appKey,\n server: {\n api,\n RTMRouter: rtm,\n },\n });\n }\n _initialized = true;\n};\n\n// If we're running in node.js, allow using the master key.\nif (process.env.PLATFORM === 'NODE_JS') {\n AV.Cloud = AV.Cloud || {};\n /**\n * Switches the LeanCloud SDK to using the Master key. The Master key grants\n * priveleged access to the data in LeanCloud and can be used to bypass ACLs and\n * other restrictions that are applied to the client SDKs.\n * <p><strong><em>Available in Cloud Code and Node.js only.</em></strong>\n * </p>\n */\n AV.Cloud.useMasterKey = () => {\n AV._config.useMasterKey = true;\n };\n}\n\n/**\n * Call this method to set production environment variable.\n * @function AV.setProduction\n * @param {Boolean} production True is production environment,and\n * it's true by default.\n */\nAV.setProduction = production => {\n if (!isNullOrUndefined(production)) {\n AV._config.production = production ? 1 : 0;\n } else {\n // change to default value\n AV._config.production = null;\n }\n};\n\nAV._setServerURLs = (urls, disableAppRouter = true) => {\n if (typeof urls !== 'string') {\n extend(AV._config.serverURLs, urls);\n } else {\n AV._config.serverURLs = fillServerURLs(urls);\n }\n if (disableAppRouter) {\n if (AV._appRouter) {\n AV._appRouter.disable();\n } else {\n _disableAppRouter = true;\n }\n }\n};\n/**\n * Set server URLs for services.\n * @function AV.setServerURL\n * @since 4.3.0\n * @param {String|ServerURLs} urls URLs for services. if a string was given, it will be applied for all services.\n * You can also set them when initializing SDK with `options.serverURL`\n */\nAV.setServerURL = urls => AV._setServerURLs(urls);\nAV.setServerURLs = AV.setServerURL;\n\nAV.keepErrorRawMessage = value => {\n AV._sharedConfig.keepErrorRawMessage = value;\n};\n\n/**\n * Set a deadline for requests to complete.\n * Note that file upload requests are not affected.\n * @function AV.setRequestTimeout\n * @since 3.6.0\n * @param {number} ms\n */\nAV.setRequestTimeout = ms => {\n AV._config.requestTimeout = ms;\n};\n\n// backword compatible\nAV.initialize = AV.init;\n\nconst defineConfig = property =>\n Object.defineProperty(AV, property, {\n get() {\n return AV._config[property];\n },\n set(value) {\n AV._config[property] = value;\n },\n });\n\n['applicationId', 'applicationKey', 'masterKey', 'hookKey'].forEach(\n defineConfig\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/init.js","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/define-property.js\n// module id = 271\n// module chunks = 0 1","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.define-property.js\n// module id = 272\n// module chunks = 0 1","const ajax = require('./utils/ajax');\nconst Cache = require('./cache');\n\nfunction AppRouter(AV) {\n this.AV = AV;\n this.lockedUntil = 0;\n Cache.getAsync('serverURLs')\n .then(data => {\n if (this.disabled) return;\n if (!data) return this.lock(0);\n const { serverURLs, lockedUntil } = data;\n this.AV._setServerURLs(serverURLs, false);\n this.lockedUntil = lockedUntil;\n })\n .catch(() => this.lock(0));\n}\n\nAppRouter.prototype.disable = function disable() {\n this.disabled = true;\n};\nAppRouter.prototype.lock = function lock(ttl) {\n this.lockedUntil = Date.now() + ttl;\n};\nAppRouter.prototype.refresh = function refresh() {\n if (this.disabled) return;\n if (Date.now() < this.lockedUntil) return;\n this.lock(10);\n const url = 'https://app-router.com/2/route';\n return ajax({\n method: 'get',\n url,\n query: {\n appId: this.AV.applicationId,\n },\n })\n .then(servers => {\n if (this.disabled) return;\n let ttl = servers.ttl;\n if (!ttl) throw new Error('missing ttl');\n ttl = ttl * 1000;\n const protocal = 'https://';\n const serverURLs = {\n push: protocal + servers.push_server,\n stats: protocal + servers.stats_server,\n engine: protocal + servers.engine_server,\n api: protocal + servers.api_server,\n };\n this.AV._setServerURLs(serverURLs, false);\n this.lock(ttl);\n return Cache.setAsync(\n 'serverURLs',\n {\n serverURLs,\n lockedUntil: this.lockedUntil,\n },\n ttl\n );\n })\n .catch(error => {\n // bypass all errors\n console.warn(`refresh server URLs failed: ${error.message}`);\n this.lock(600);\n });\n};\n\nmodule.exports = AppRouter;\n\n\n\n// WEBPACK FOOTER //\n// ./src/app-router.js","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/symbol/iterator.js\n// module id = 274\n// module chunks = 0 1","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/symbol/iterator.js\n// module id = 275\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/symbol.js\n// module id = 276\n// module chunks = 0 1","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/symbol/index.js\n// module id = 277\n// module chunks = 0 1","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.symbol.js\n// module id = 278\n// module chunks = 0 1","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_meta.js\n// module id = 279\n// module chunks = 0 1","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_enum-keys.js\n// module id = 280\n// module chunks = 0 1","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-array.js\n// module id = 281\n// module chunks = 0 1","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopn-ext.js\n// module id = 282\n// module chunks = 0 1","require('./_wks-define')('asyncIterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.symbol.async-iterator.js\n// module id = 283\n// module chunks = 0 1","require('./_wks-define')('observable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.symbol.observable.js\n// module id = 284\n// module chunks = 0 1","// Copyright (c) 2015-2017 David M. Lee, II\n'use strict';\n\n/**\n * Local reference to TimeoutError\n * @private\n */\nvar TimeoutError;\n\n/**\n * Rejects a promise with a {@link TimeoutError} if it does not settle within\n * the specified timeout.\n *\n * @param {Promise} promise The promise.\n * @param {number} timeoutMillis Number of milliseconds to wait on settling.\n * @returns {Promise} Either resolves/rejects with `promise`, or rejects with\n * `TimeoutError`, whichever settles first.\n */\nvar timeout = module.exports.timeout = function(promise, timeoutMillis) {\n var error = new TimeoutError(),\n timeout;\n\n return Promise.race([\n promise,\n new Promise(function(resolve, reject) {\n timeout = setTimeout(function() {\n reject(error);\n }, timeoutMillis);\n }),\n ]).then(function(v) {\n clearTimeout(timeout);\n return v;\n }, function(err) {\n clearTimeout(timeout);\n throw err;\n });\n};\n\n/**\n * Exception indicating that the timeout expired.\n */\nTimeoutError = module.exports.TimeoutError = function() {\n Error.call(this)\n this.stack = Error().stack\n this.message = 'Timeout';\n};\n\nTimeoutError.prototype = Object.create(Error.prototype);\nTimeoutError.prototype.name = \"TimeoutError\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/promise-timeout/index.js\n// module id = 285\n// module chunks = 0 1","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n var eventSplitter = /\\s+/;\n var slice = Array.prototype.slice;\n\n /**\n * @class\n *\n * <p>AV.Events is a fork of Backbone's Events module, provided for your\n * convenience.</p>\n *\n * <p>A module that can be mixed in to any object in order to provide\n * it with custom events. You may bind callback functions to an event\n * with `on`, or remove these functions with `off`.\n * Triggering an event fires all callbacks in the order that `on` was\n * called.\n *\n * @private\n * @example\n * var object = {};\n * _.extend(object, AV.Events);\n * object.on('expand', function(){ alert('expanded'); });\n * object.trigger('expand');</pre></p>\n *\n */\n AV.Events = {\n /**\n * Bind one or more space separated events, `events`, to a `callback`\n * function. Passing `\"all\"` will bind the callback to all events fired.\n */\n on: function(events, callback, context) {\n var calls, event, node, tail, list;\n if (!callback) {\n return this;\n }\n events = events.split(eventSplitter);\n calls = this._callbacks || (this._callbacks = {});\n\n // Create an immutable callback list, allowing traversal during\n // modification. The tail is an empty object that will always be used\n // as the next node.\n event = events.shift();\n while (event) {\n list = calls[event];\n node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = { tail: tail, next: list ? list.next : node };\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Remove one or many callbacks. If `context` is null, removes all callbacks\n * with that function. If `callback` is null, removes all callbacks for the\n * event. If `events` is null, removes all bound callbacks for all events.\n */\n off: function(events, callback, context) {\n var event, calls, node, tail, cb, ctx;\n\n // No events, or removing *all* events.\n if (!(calls = this._callbacks)) {\n return;\n }\n if (!(events || callback || context)) {\n delete this._callbacks;\n return this;\n }\n\n // Loop through the listed events and contexts, splicing them out of the\n // linked list of callbacks if appropriate.\n events = events ? events.split(eventSplitter) : _.keys(calls);\n event = events.shift();\n while (event) {\n node = calls[event];\n delete calls[event];\n if (!node || !(callback || context)) {\n continue;\n }\n // Create a new list, omitting the indicated callbacks.\n tail = node.tail;\n node = node.next;\n while (node !== tail) {\n cb = node.callback;\n ctx = node.context;\n if ((callback && cb !== callback) || (context && ctx !== context)) {\n this.on(event, cb, ctx);\n }\n node = node.next;\n }\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Trigger one or many events, firing all bound callbacks. Callbacks are\n * passed the same arguments as `trigger` is, apart from the event name\n * (unless you're listening on `\"all\"`, which will cause your callback to\n * receive the true name of the event as the first argument).\n */\n trigger: function(events) {\n var event, node, calls, tail, args, all, rest;\n if (!(calls = this._callbacks)) {\n return this;\n }\n all = calls.all;\n events = events.split(eventSplitter);\n rest = slice.call(arguments, 1);\n\n // For each event, walk through the linked list of callbacks twice,\n // first to trigger the event, then to trigger any `\"all\"` callbacks.\n event = events.shift();\n while (event) {\n node = calls[event];\n if (node) {\n tail = node.tail;\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, rest);\n }\n }\n node = all;\n if (node) {\n tail = node.tail;\n args = [event].concat(rest);\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, args);\n }\n }\n event = events.shift();\n }\n\n return this;\n },\n };\n\n /**\n * @function\n */\n AV.Events.bind = AV.Events.on;\n\n /**\n * @function\n */\n AV.Events.unbind = AV.Events.off;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/event.js","var _ = require('underscore');\n\n/*global navigator: false */\nmodule.exports = function(AV) {\n /**\n * Creates a new GeoPoint with any of the following forms:<br>\n * @example\n * new GeoPoint(otherGeoPoint)\n * new GeoPoint(30, 30)\n * new GeoPoint([30, 30])\n * new GeoPoint({latitude: 30, longitude: 30})\n * new GeoPoint() // defaults to (0, 0)\n * @class\n *\n * <p>Represents a latitude / longitude point that may be associated\n * with a key in a AVObject or used as a reference point for geo queries.\n * This allows proximity-based queries on the key.</p>\n *\n * <p>Only one key in a class may contain a GeoPoint.</p>\n *\n * <p>Example:<pre>\n * var point = new AV.GeoPoint(30.0, -20.0);\n * var object = new AV.Object(\"PlaceObject\");\n * object.set(\"location\", point);\n * object.save();</pre></p>\n */\n AV.GeoPoint = function(arg1, arg2) {\n if (_.isArray(arg1)) {\n AV.GeoPoint._validate(arg1[0], arg1[1]);\n this.latitude = arg1[0];\n this.longitude = arg1[1];\n } else if (_.isObject(arg1)) {\n AV.GeoPoint._validate(arg1.latitude, arg1.longitude);\n this.latitude = arg1.latitude;\n this.longitude = arg1.longitude;\n } else if (_.isNumber(arg1) && _.isNumber(arg2)) {\n AV.GeoPoint._validate(arg1, arg2);\n this.latitude = arg1;\n this.longitude = arg2;\n } else {\n this.latitude = 0;\n this.longitude = 0;\n }\n\n // Add properties so that anyone using Webkit or Mozilla will get an error\n // if they try to set values that are out of bounds.\n var self = this;\n if (this.__defineGetter__ && this.__defineSetter__) {\n // Use _latitude and _longitude to actually store the values, and add\n // getters and setters for latitude and longitude.\n this._latitude = this.latitude;\n this._longitude = this.longitude;\n this.__defineGetter__('latitude', function() {\n return self._latitude;\n });\n this.__defineGetter__('longitude', function() {\n return self._longitude;\n });\n this.__defineSetter__('latitude', function(val) {\n AV.GeoPoint._validate(val, self.longitude);\n self._latitude = val;\n });\n this.__defineSetter__('longitude', function(val) {\n AV.GeoPoint._validate(self.latitude, val);\n self._longitude = val;\n });\n }\n };\n\n /**\n * @lends AV.GeoPoint.prototype\n * @property {float} latitude North-south portion of the coordinate, in range\n * [-90, 90]. Throws an exception if set out of range in a modern browser.\n * @property {float} longitude East-west portion of the coordinate, in range\n * [-180, 180]. Throws if set out of range in a modern browser.\n */\n\n /**\n * Throws an exception if the given lat-long is out of bounds.\n * @private\n */\n AV.GeoPoint._validate = function(latitude, longitude) {\n if (latitude < -90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' < -90.0.');\n }\n if (latitude > 90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' > 90.0.');\n }\n if (longitude < -180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' < -180.0.');\n }\n if (longitude > 180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' > 180.0.');\n }\n };\n\n /**\n * Creates a GeoPoint with the user's current location, if available.\n * @return {Promise.<AV.GeoPoint>}\n */\n AV.GeoPoint.current = () =>\n new Promise((resolve, reject) => {\n navigator.geolocation.getCurrentPosition(function(location) {\n resolve(\n new AV.GeoPoint({\n latitude: location.coords.latitude,\n longitude: location.coords.longitude,\n })\n );\n }, reject);\n });\n\n _.extend(\n AV.GeoPoint.prototype,\n /** @lends AV.GeoPoint.prototype */ {\n /**\n * Returns a JSON representation of the GeoPoint, suitable for AV.\n * @return {Object}\n */\n toJSON: function() {\n AV.GeoPoint._validate(this.latitude, this.longitude);\n return {\n __type: 'GeoPoint',\n latitude: this.latitude,\n longitude: this.longitude,\n };\n },\n\n /**\n * Returns the distance from this GeoPoint to another in radians.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n radiansTo: function(point) {\n var d2r = Math.PI / 180.0;\n var lat1rad = this.latitude * d2r;\n var long1rad = this.longitude * d2r;\n var lat2rad = point.latitude * d2r;\n var long2rad = point.longitude * d2r;\n var deltaLat = lat1rad - lat2rad;\n var deltaLong = long1rad - long2rad;\n var sinDeltaLatDiv2 = Math.sin(deltaLat / 2);\n var sinDeltaLongDiv2 = Math.sin(deltaLong / 2);\n // Square of half the straight line chord distance between both points.\n var a =\n sinDeltaLatDiv2 * sinDeltaLatDiv2 +\n Math.cos(lat1rad) *\n Math.cos(lat2rad) *\n sinDeltaLongDiv2 *\n sinDeltaLongDiv2;\n a = Math.min(1.0, a);\n return 2 * Math.asin(Math.sqrt(a));\n },\n\n /**\n * Returns the distance from this GeoPoint to another in kilometers.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n kilometersTo: function(point) {\n return this.radiansTo(point) * 6371.0;\n },\n\n /**\n * Returns the distance from this GeoPoint to another in miles.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n milesTo: function(point) {\n return this.radiansTo(point) * 3958.8;\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/geopoint.js","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n var PUBLIC_KEY = '*';\n\n /**\n * Creates a new ACL.\n * If no argument is given, the ACL has no permissions for anyone.\n * If the argument is a AV.User, the ACL will have read and write\n * permission for only that user.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized ACL created with toJSON().\n * @see AV.Object#setACL\n * @class\n *\n * <p>An ACL, or Access Control List can be added to any\n * <code>AV.Object</code> to restrict access to only a subset of users\n * of your application.</p>\n */\n AV.ACL = function(arg1) {\n var self = this;\n self.permissionsById = {};\n if (_.isObject(arg1)) {\n if (arg1 instanceof AV.User) {\n self.setReadAccess(arg1, true);\n self.setWriteAccess(arg1, true);\n } else {\n if (_.isFunction(arg1)) {\n throw new Error(\n 'AV.ACL() called with a function. Did you forget ()?'\n );\n }\n AV._objectEach(arg1, function(accessList, userId) {\n if (!_.isString(userId)) {\n throw new Error('Tried to create an ACL with an invalid userId.');\n }\n self.permissionsById[userId] = {};\n AV._objectEach(accessList, function(allowed, permission) {\n if (permission !== 'read' && permission !== 'write') {\n throw new Error(\n 'Tried to create an ACL with an invalid permission type.'\n );\n }\n if (!_.isBoolean(allowed)) {\n throw new Error(\n 'Tried to create an ACL with an invalid permission value.'\n );\n }\n self.permissionsById[userId][permission] = allowed;\n });\n });\n }\n }\n };\n\n /**\n * Returns a JSON-encoded version of the ACL.\n * @return {Object}\n */\n AV.ACL.prototype.toJSON = function() {\n return _.clone(this.permissionsById);\n };\n\n AV.ACL.prototype._setAccess = function(accessType, userId, allowed) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n if (!_.isString(userId)) {\n throw new Error('userId must be a string.');\n }\n if (!_.isBoolean(allowed)) {\n throw new Error('allowed must be either true or false.');\n }\n var permissions = this.permissionsById[userId];\n if (!permissions) {\n if (!allowed) {\n // The user already doesn't have this permission, so no action needed.\n return;\n } else {\n permissions = {};\n this.permissionsById[userId] = permissions;\n }\n }\n\n if (allowed) {\n this.permissionsById[userId][accessType] = true;\n } else {\n delete permissions[accessType];\n if (_.isEmpty(permissions)) {\n delete this.permissionsById[userId];\n }\n }\n };\n\n AV.ACL.prototype._getAccess = function(accessType, userId) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n var permissions = this.permissionsById[userId];\n if (!permissions) {\n return false;\n }\n return permissions[accessType] ? true : false;\n };\n\n /**\n * Set whether the given user is allowed to read this object.\n * @param userId An instance of AV.User or its objectId.\n * @param {Boolean} allowed Whether that user should have read access.\n */\n AV.ACL.prototype.setReadAccess = function(userId, allowed) {\n this._setAccess('read', userId, allowed);\n };\n\n /**\n * Get whether the given user id is *explicitly* allowed to read this object.\n * Even if this returns false, the user may still be able to access it if\n * getPublicReadAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n AV.ACL.prototype.getReadAccess = function(userId) {\n return this._getAccess('read', userId);\n };\n\n /**\n * Set whether the given user id is allowed to write this object.\n * @param userId An instance of AV.User or its objectId, or a AV.Role..\n * @param {Boolean} allowed Whether that user should have write access.\n */\n AV.ACL.prototype.setWriteAccess = function(userId, allowed) {\n this._setAccess('write', userId, allowed);\n };\n\n /**\n * Get whether the given user id is *explicitly* allowed to write this object.\n * Even if this returns false, the user may still be able to write it if\n * getPublicWriteAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n AV.ACL.prototype.getWriteAccess = function(userId) {\n return this._getAccess('write', userId);\n };\n\n /**\n * Set whether the public is allowed to read this object.\n * @param {Boolean} allowed\n */\n AV.ACL.prototype.setPublicReadAccess = function(allowed) {\n this.setReadAccess(PUBLIC_KEY, allowed);\n };\n\n /**\n * Get whether the public is allowed to read this object.\n * @return {Boolean}\n */\n AV.ACL.prototype.getPublicReadAccess = function() {\n return this.getReadAccess(PUBLIC_KEY);\n };\n\n /**\n * Set whether the public is allowed to write this object.\n * @param {Boolean} allowed\n */\n AV.ACL.prototype.setPublicWriteAccess = function(allowed) {\n this.setWriteAccess(PUBLIC_KEY, allowed);\n };\n\n /**\n * Get whether the public is allowed to write this object.\n * @return {Boolean}\n */\n AV.ACL.prototype.getPublicWriteAccess = function() {\n return this.getWriteAccess(PUBLIC_KEY);\n };\n\n /**\n * Get whether users belonging to the given role are allowed\n * to read this object. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has read access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.getRoleReadAccess = function(role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n return this.getReadAccess('role:' + role);\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Get whether users belonging to the given role are allowed\n * to write this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.getRoleWriteAccess = function(role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n return this.getWriteAccess('role:' + role);\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Set whether users belonging to the given role are allowed\n * to read this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can read this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.setRoleReadAccess = function(role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n this.setReadAccess('role:' + role, allowed);\n return;\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Set whether users belonging to the given role are allowed\n * to write this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.setRoleWriteAccess = function(role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n this.setWriteAccess('role:' + role, allowed);\n return;\n }\n throw new Error('role must be a AV.Role or a String');\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/acl.js","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n /**\n * @private\n * @class\n * A AV.Op is an atomic operation that can be applied to a field in a\n * AV.Object. For example, calling <code>object.set(\"foo\", \"bar\")</code>\n * is an example of a AV.Op.Set. Calling <code>object.unset(\"foo\")</code>\n * is a AV.Op.Unset. These operations are stored in a AV.Object and\n * sent to the server as part of <code>object.save()</code> operations.\n * Instances of AV.Op should be immutable.\n *\n * You should not create subclasses of AV.Op or instantiate AV.Op\n * directly.\n */\n AV.Op = function() {\n this._initialize.apply(this, arguments);\n };\n\n _.extend(\n AV.Op.prototype,\n /** @lends AV.Op.prototype */ {\n _initialize: function() {},\n }\n );\n\n _.extend(AV.Op, {\n /**\n * To create a new Op, call AV.Op._extend();\n * @private\n */\n _extend: AV._extend,\n\n // A map of __op string to decoder function.\n _opDecoderMap: {},\n\n /**\n * Registers a function to convert a json object with an __op field into an\n * instance of a subclass of AV.Op.\n * @private\n */\n _registerDecoder: function(opName, decoder) {\n AV.Op._opDecoderMap[opName] = decoder;\n },\n\n /**\n * Converts a json object into an instance of a subclass of AV.Op.\n * @private\n */\n _decode: function(json) {\n var decoder = AV.Op._opDecoderMap[json.__op];\n if (decoder) {\n return decoder(json);\n } else {\n return undefined;\n }\n },\n });\n\n /*\n * Add a handler for Batch ops.\n */\n AV.Op._registerDecoder('Batch', function(json) {\n var op = null;\n AV._arrayEach(json.ops, function(nextOp) {\n nextOp = AV.Op._decode(nextOp);\n op = nextOp._mergeWithPrevious(op);\n });\n return op;\n });\n\n /**\n * @private\n * @class\n * A Set operation indicates that either the field was changed using\n * AV.Object.set, or it is a mutable container that was detected as being\n * changed.\n */\n AV.Op.Set = AV.Op._extend(\n /** @lends AV.Op.Set.prototype */ {\n _initialize: function(value) {\n this._value = value;\n },\n\n /**\n * Returns the new value of this field after the set.\n */\n value: function() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return AV._encode(this.value());\n },\n\n _mergeWithPrevious: function(previous) {\n return this;\n },\n\n _estimate: function(oldValue) {\n return this.value();\n },\n }\n );\n\n /**\n * A sentinel value that is returned by AV.Op.Unset._estimate to\n * indicate the field should be deleted. Basically, if you find _UNSET as a\n * value in your object, you should remove that key.\n */\n AV.Op._UNSET = {};\n\n /**\n * @private\n * @class\n * An Unset operation indicates that this field has been deleted from the\n * object.\n */\n AV.Op.Unset = AV.Op._extend(\n /** @lends AV.Op.Unset.prototype */ {\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Delete' };\n },\n\n _mergeWithPrevious: function(previous) {\n return this;\n },\n\n _estimate: function(oldValue) {\n return AV.Op._UNSET;\n },\n }\n );\n\n AV.Op._registerDecoder('Delete', function(json) {\n return new AV.Op.Unset();\n });\n\n /**\n * @private\n * @class\n * An Increment is an atomic operation where the numeric value for the field\n * will be increased by a given amount.\n */\n AV.Op.Increment = AV.Op._extend(\n /** @lends AV.Op.Increment.prototype */ {\n _initialize: function(amount) {\n this._amount = amount;\n },\n\n /**\n * Returns the amount to increment by.\n * @return {Number} the amount to increment by.\n */\n amount: function() {\n return this._amount;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Increment', amount: this._amount };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.amount());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() + this.amount());\n } else if (previous instanceof AV.Op.Increment) {\n return new AV.Op.Increment(this.amount() + previous.amount());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return this.amount();\n }\n return oldValue + this.amount();\n },\n }\n );\n\n AV.Op._registerDecoder('Increment', function(json) {\n return new AV.Op.Increment(json.amount);\n });\n\n /**\n * @private\n * @class\n * BitAnd is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitAnd = AV.Op._extend(\n /** @lends AV.Op.BitAnd.prototype */ {\n _initialize(value) {\n this._value = value;\n },\n\n value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON() {\n return { __op: 'BitAnd', value: this.value() };\n },\n\n _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(0);\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() & this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate(oldValue) {\n return oldValue & this.value();\n },\n }\n );\n\n AV.Op._registerDecoder('BitAnd', function(json) {\n return new AV.Op.BitAnd(json.value);\n });\n\n /**\n * @private\n * @class\n * BitOr is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitOr = AV.Op._extend(\n /** @lends AV.Op.BitOr.prototype */ {\n _initialize(value) {\n this._value = value;\n },\n\n value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON() {\n return { __op: 'BitOr', value: this.value() };\n },\n\n _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() | this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate(oldValue) {\n return oldValue | this.value();\n },\n }\n );\n\n AV.Op._registerDecoder('BitOr', function(json) {\n return new AV.Op.BitOr(json.value);\n });\n\n /**\n * @private\n * @class\n * BitXor is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitXor = AV.Op._extend(\n /** @lends AV.Op.BitXor.prototype */ {\n _initialize(value) {\n this._value = value;\n },\n\n value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON() {\n return { __op: 'BitXor', value: this.value() };\n },\n\n _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() ^ this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate(oldValue) {\n return oldValue ^ this.value();\n },\n }\n );\n\n AV.Op._registerDecoder('BitXor', function(json) {\n return new AV.Op.BitXor(json.value);\n });\n\n /**\n * @private\n * @class\n * Add is an atomic operation where the given objects will be appended to the\n * array that is stored in this field.\n */\n AV.Op.Add = AV.Op._extend(\n /** @lends AV.Op.Add.prototype */ {\n _initialize: function(objects) {\n this._objects = objects;\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Add', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Add) {\n return new AV.Op.Add(previous.objects().concat(this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n return oldValue.concat(this.objects());\n }\n },\n }\n );\n\n AV.Op._registerDecoder('Add', function(json) {\n return new AV.Op.Add(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * AddUnique is an atomic operation where the given items will be appended to\n * the array that is stored in this field only if they were not already\n * present in the array.\n */\n AV.Op.AddUnique = AV.Op._extend(\n /** @lends AV.Op.AddUnique.prototype */ {\n _initialize: function(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'AddUnique', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.AddUnique) {\n return new AV.Op.AddUnique(this._estimate(previous.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n // We can't just take the _.uniq(_.union(...)) of oldValue and\n // this.objects, because the uniqueness may not apply to oldValue\n // (especially if the oldValue was set via .set())\n var newValue = _.clone(oldValue);\n AV._arrayEach(this.objects(), function(obj) {\n if (obj instanceof AV.Object && obj.id) {\n var matchingObj = _.find(newValue, function(anObj) {\n return anObj instanceof AV.Object && anObj.id === obj.id;\n });\n if (!matchingObj) {\n newValue.push(obj);\n } else {\n var index = _.indexOf(newValue, matchingObj);\n newValue[index] = obj;\n }\n } else if (!_.contains(newValue, obj)) {\n newValue.push(obj);\n }\n });\n return newValue;\n }\n },\n }\n );\n\n AV.Op._registerDecoder('AddUnique', function(json) {\n return new AV.Op.AddUnique(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * Remove is an atomic operation where the given objects will be removed from\n * the array that is stored in this field.\n */\n AV.Op.Remove = AV.Op._extend(\n /** @lends AV.Op.Remove.prototype */ {\n _initialize: function(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be removed from the array.\n * @return {Array} The objects to be removed from the array.\n */\n objects: function() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Remove', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return previous;\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Remove) {\n return new AV.Op.Remove(_.union(previous.objects(), this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return [];\n } else {\n var newValue = _.difference(oldValue, this.objects());\n // If there are saved AV Objects being removed, also remove them.\n AV._arrayEach(this.objects(), function(obj) {\n if (obj instanceof AV.Object && obj.id) {\n newValue = _.reject(newValue, function(other) {\n return other instanceof AV.Object && other.id === obj.id;\n });\n }\n });\n return newValue;\n }\n },\n }\n );\n\n AV.Op._registerDecoder('Remove', function(json) {\n return new AV.Op.Remove(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * A Relation operation indicates that the field is an instance of\n * AV.Relation, and objects are being added to, or removed from, that\n * relation.\n */\n AV.Op.Relation = AV.Op._extend(\n /** @lends AV.Op.Relation.prototype */ {\n _initialize: function(adds, removes) {\n this._targetClassName = null;\n\n var self = this;\n\n var pointerToId = function(object) {\n if (object instanceof AV.Object) {\n if (!object.id) {\n throw new Error(\n \"You can't add an unsaved AV.Object to a relation.\"\n );\n }\n if (!self._targetClassName) {\n self._targetClassName = object.className;\n }\n if (self._targetClassName !== object.className) {\n throw new Error(\n 'Tried to create a AV.Relation with 2 different types: ' +\n self._targetClassName +\n ' and ' +\n object.className +\n '.'\n );\n }\n return object.id;\n }\n return object;\n };\n\n this.relationsToAdd = _.uniq(_.map(adds, pointerToId));\n this.relationsToRemove = _.uniq(_.map(removes, pointerToId));\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being added to the\n * relation.\n * @return {Array}\n */\n added: function() {\n var self = this;\n return _.map(this.relationsToAdd, function(objectId) {\n var object = AV.Object._create(self._targetClassName);\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being removed from\n * the relation.\n * @return {Array}\n */\n removed: function() {\n var self = this;\n return _.map(this.relationsToRemove, function(objectId) {\n var object = AV.Object._create(self._targetClassName);\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n var adds = null;\n var removes = null;\n var self = this;\n var idToPointer = function(id) {\n return {\n __type: 'Pointer',\n className: self._targetClassName,\n objectId: id,\n };\n };\n var pointers = null;\n if (this.relationsToAdd.length > 0) {\n pointers = _.map(this.relationsToAdd, idToPointer);\n adds = { __op: 'AddRelation', objects: pointers };\n }\n\n if (this.relationsToRemove.length > 0) {\n pointers = _.map(this.relationsToRemove, idToPointer);\n removes = { __op: 'RemoveRelation', objects: pointers };\n }\n\n if (adds && removes) {\n return { __op: 'Batch', ops: [adds, removes] };\n }\n\n return adds || removes || {};\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n throw new Error(\"You can't modify a relation after deleting it.\");\n } else if (previous instanceof AV.Op.Relation) {\n if (\n previous._targetClassName &&\n previous._targetClassName !== this._targetClassName\n ) {\n throw new Error(\n 'Related object must be of class ' +\n previous._targetClassName +\n ', but ' +\n this._targetClassName +\n ' was passed in.'\n );\n }\n var newAdd = _.union(\n _.difference(previous.relationsToAdd, this.relationsToRemove),\n this.relationsToAdd\n );\n var newRemove = _.union(\n _.difference(previous.relationsToRemove, this.relationsToAdd),\n this.relationsToRemove\n );\n\n var newRelation = new AV.Op.Relation(newAdd, newRemove);\n newRelation._targetClassName = this._targetClassName;\n return newRelation;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue, object, key) {\n if (!oldValue) {\n var relation = new AV.Relation(object, key);\n relation.targetClassName = this._targetClassName;\n } else if (oldValue instanceof AV.Relation) {\n if (this._targetClassName) {\n if (oldValue.targetClassName) {\n if (oldValue.targetClassName !== this._targetClassName) {\n throw new Error(\n 'Related object must be a ' +\n oldValue.targetClassName +\n ', but a ' +\n this._targetClassName +\n ' was passed in.'\n );\n }\n } else {\n oldValue.targetClassName = this._targetClassName;\n }\n }\n return oldValue;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n }\n );\n\n AV.Op._registerDecoder('AddRelation', function(json) {\n return new AV.Op.Relation(AV._decode(json.objects), []);\n });\n AV.Op._registerDecoder('RemoveRelation', function(json) {\n return new AV.Op.Relation([], AV._decode(json.objects));\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/op.js","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n /**\n * Creates a new Relation for the given parent object and key. This\n * constructor should rarely be used directly, but rather created by\n * {@link AV.Object#relation}.\n * @param {AV.Object} parent The parent of this relation.\n * @param {String} key The key for this relation on the parent.\n * @see AV.Object#relation\n * @class\n *\n * <p>\n * A class that is used to access all of the children of a many-to-many\n * relationship. Each instance of AV.Relation is associated with a\n * particular parent object and key.\n * </p>\n */\n AV.Relation = function(parent, key) {\n if (!_.isString(key)) {\n throw new TypeError('key must be a string');\n }\n this.parent = parent;\n this.key = key;\n this.targetClassName = null;\n };\n\n /**\n * Creates a query that can be used to query the parent objects in this relation.\n * @param {String} parentClass The parent class or name.\n * @param {String} relationKey The relation field key in parent.\n * @param {AV.Object} child The child object.\n * @return {AV.Query}\n */\n AV.Relation.reverseQuery = function(parentClass, relationKey, child) {\n var query = new AV.Query(parentClass);\n query.equalTo(relationKey, child._toPointer());\n return query;\n };\n\n _.extend(\n AV.Relation.prototype,\n /** @lends AV.Relation.prototype */ {\n /**\n * Makes sure that this relation has the right parent and key.\n * @private\n */\n _ensureParentAndKey: function(parent, key) {\n this.parent = this.parent || parent;\n this.key = this.key || key;\n if (this.parent !== parent) {\n throw new Error(\n 'Internal Error. Relation retrieved from two different Objects.'\n );\n }\n if (this.key !== key) {\n throw new Error(\n 'Internal Error. Relation retrieved from two different keys.'\n );\n }\n },\n\n /**\n * Adds a AV.Object or an array of AV.Objects to the relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to add.\n */\n add: function(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation(objects, []);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Removes a AV.Object or an array of AV.Objects from this relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to remove.\n */\n remove: function(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation([], objects);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON: function() {\n return { __type: 'Relation', className: this.targetClassName };\n },\n\n /**\n * Returns a AV.Query that is limited to objects in this\n * relation.\n * @return {AV.Query}\n */\n query: function() {\n var targetClass;\n var query;\n if (!this.targetClassName) {\n targetClass = AV.Object._getSubclass(this.parent.className);\n query = new AV.Query(targetClass);\n query._defaultParams.redirectClassNameForKey = this.key;\n } else {\n targetClass = AV.Object._getSubclass(this.targetClassName);\n query = new AV.Query(targetClass);\n }\n query._addCondition('$relatedTo', 'object', this.parent._toPointer());\n query._addCondition('$relatedTo', 'key', this.key);\n\n return query;\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/relation.js","const _ = require('underscore');\nconst cos = require('./uploader/cos');\nconst qiniu = require('./uploader/qiniu');\nconst s3 = require('./uploader/s3');\nconst AVError = require('./error');\nconst AVRequest = require('./request')._request;\nconst { tap, transformFetchOptions } = require('./utils');\nconst debug = require('debug')('leancloud:file');\nconst parseBase64 = require('./utils/parse-base64');\n\nmodule.exports = function(AV) {\n // port from browserify path module\n // since react-native packager won't shim node modules.\n const extname = path => {\n if (!_.isString(path)) return '';\n return path.match(\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/\n )[4];\n };\n\n const b64Digit = number => {\n if (number < 26) {\n return String.fromCharCode(65 + number);\n }\n if (number < 52) {\n return String.fromCharCode(97 + (number - 26));\n }\n if (number < 62) {\n return String.fromCharCode(48 + (number - 52));\n }\n if (number === 62) {\n return '+';\n }\n if (number === 63) {\n return '/';\n }\n throw new Error('Tried to encode large digit ' + number + ' in base64.');\n };\n\n var encodeBase64 = function(array) {\n var chunks = [];\n chunks.length = Math.ceil(array.length / 3);\n _.times(chunks.length, function(i) {\n var b1 = array[i * 3];\n var b2 = array[i * 3 + 1] || 0;\n var b3 = array[i * 3 + 2] || 0;\n\n var has2 = i * 3 + 1 < array.length;\n var has3 = i * 3 + 2 < array.length;\n\n chunks[i] = [\n b64Digit((b1 >> 2) & 0x3f),\n b64Digit(((b1 << 4) & 0x30) | ((b2 >> 4) & 0x0f)),\n has2 ? b64Digit(((b2 << 2) & 0x3c) | ((b3 >> 6) & 0x03)) : '=',\n has3 ? b64Digit(b3 & 0x3f) : '=',\n ].join('');\n });\n return chunks.join('');\n };\n\n /**\n * An AV.File is a local representation of a file that is saved to the AV\n * cloud.\n * @param name {String} The file's name. This will change to a unique value\n * once the file has finished saving.\n * @param data {Array} The data for the file, as either:\n * 1. an Array of byte value Numbers, or\n * 2. an Object like { base64: \"...\" } with a base64-encoded String.\n * 3. a Blob(File) selected with a file upload control in a browser.\n * 4. an Object like { blob: {uri: \"...\"} } that mimics Blob\n * in some non-browser environments such as React Native.\n * 5. a Buffer in Node.js runtime.\n * 6. a Stream in Node.js runtime.\n *\n * For example:<pre>\n * var fileUploadControl = $(\"#profilePhotoFileUpload\")[0];\n * if (fileUploadControl.files.length > 0) {\n * var file = fileUploadControl.files[0];\n * var name = \"photo.jpg\";\n * var file = new AV.File(name, file);\n * file.save().then(function() {\n * // The file has been saved to AV.\n * }, function(error) {\n * // The file either could not be read, or could not be saved to AV.\n * });\n * }</pre>\n *\n * @class\n * @param [mimeType] {String} Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n */\n AV.File = function(name, data, mimeType) {\n this.attributes = {\n name,\n url: '',\n metaData: {},\n // 用来存储转换后要上传的 base64 String\n base64: '',\n };\n\n if (_.isString(data)) {\n throw new TypeError(\n 'Creating an AV.File from a String is not yet supported.'\n );\n }\n if (_.isArray(data)) {\n this.attributes.metaData.size = data.length;\n data = { base64: encodeBase64(data) };\n }\n\n this._extName = '';\n this._data = data;\n this._uploadHeaders = {};\n\n if (data && data.blob && typeof data.blob.uri === 'string') {\n this._extName = extname(data.blob.uri);\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n if (data.size) {\n this.attributes.metaData.size = data.size;\n }\n if (data.name) {\n this._extName = extname(data.name);\n }\n }\n\n\n let owner;\n if (data && data.owner) {\n owner = data.owner;\n } else if (!AV._config.disableCurrentUser) {\n try {\n owner = AV.User.current();\n } catch (error) {\n if ('SYNC_API_NOT_AVAILABLE' !== error.code) {\n throw error;\n }\n }\n }\n\n this.attributes.metaData.owner = owner ? owner.id : 'unknown';\n\n this.set('mime_type', mimeType);\n };\n\n /**\n * Creates a fresh AV.File object with exists url for saving to AVOS Cloud.\n * @param {String} name the file name\n * @param {String} url the file url.\n * @param {Object} [metaData] the file metadata object.\n * @param {String} [type] Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n * @return {AV.File} the file object\n */\n AV.File.withURL = function(name, url, metaData, type) {\n if (!name || !url) {\n throw new Error('Please provide file name and url');\n }\n var file = new AV.File(name, null, type);\n //copy metaData properties to file.\n if (metaData) {\n for (var prop in metaData) {\n if (!file.attributes.metaData[prop])\n file.attributes.metaData[prop] = metaData[prop];\n }\n }\n file.attributes.url = url;\n //Mark the file is from external source.\n file.attributes.metaData.__source = 'external';\n file.attributes.metaData.size = 0;\n return file;\n };\n\n /**\n * Creates a file object with exists objectId.\n * @param {String} objectId The objectId string\n * @return {AV.File} the file object\n */\n AV.File.createWithoutData = function(objectId) {\n if (!objectId) {\n throw new TypeError('The objectId must be provided');\n }\n var file = new AV.File();\n file.id = objectId;\n return file;\n };\n\n _.extend(\n AV.File.prototype,\n /** @lends AV.File.prototype */ {\n className: '_File',\n\n _toFullJSON(seenObjects, full = true) {\n var json = _.clone(this.attributes);\n AV._objectEach(json, function(val, key) {\n json[key] = AV._encode(val, seenObjects, undefined, full);\n });\n AV._objectEach(this._operations, function(val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n ['createdAt', 'updatedAt'].forEach(key => {\n if (_.has(this, key)) {\n const val = this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n if (full) {\n json.__type = 'File';\n }\n return json;\n },\n\n /**\n * Returns a JSON version of the file with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON(seenObjects = []) {\n return this._toFullJSON(seenObjects);\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON(key, holder, seenObjects = [this]) {\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Gets a Pointer referencing this file.\n * @private\n */\n _toPointer() {\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id,\n };\n },\n\n /**\n * Returns the ACL for this file.\n * @returns {AV.ACL} An instance of AV.ACL.\n */\n getACL() {\n return this._acl;\n },\n\n /**\n * Sets the ACL to be used for this file.\n * @param {AV.ACL} acl An instance of AV.ACL.\n */\n setACL(acl) {\n if (!(acl instanceof AV.ACL)) {\n return new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n this._acl = acl;\n return this;\n },\n\n /**\n * Gets the name of the file. Before save is called, this is the filename\n * given by the user. After save is called, that name gets prefixed with a\n * unique identifier.\n */\n name() {\n return this.get('name');\n },\n\n /**\n * Gets the url of the file. It is only available after you save the file or\n * after you get the file from a AV.Object.\n * @return {String}\n */\n url() {\n return this.get('url');\n },\n\n /**\n * Gets the attributs of the file object.\n * @param {String} The attribute name which want to get.\n * @returns {Any}\n */\n get(attrName) {\n switch (attrName) {\n case 'objectId':\n return this.id;\n case 'url':\n case 'name':\n case 'mime_type':\n case 'metaData':\n case 'createdAt':\n case 'updatedAt':\n return this.attributes[attrName];\n default:\n return this.attributes.metaData[attrName];\n }\n },\n\n /**\n * Set the metaData of the file object.\n * @param {Object} Object is an key value Object for setting metaData.\n * @param {String} attr is an optional metadata key.\n * @param {Object} value is an optional metadata value.\n * @returns {String|Number|Array|Object}\n */\n set(...args) {\n const set = (attrName, value) => {\n switch (attrName) {\n case 'name':\n case 'url':\n case 'mime_type':\n case 'base64':\n case 'metaData':\n this.attributes[attrName] = value;\n break;\n default:\n // File 并非一个 AVObject,不能完全自定义其他属性,所以只能都放在 metaData 上面\n this.attributes.metaData[attrName] = value;\n break;\n }\n };\n\n switch (args.length) {\n case 1:\n // 传入一个 Object\n for (var k in args[0]) {\n set(k, args[0][k]);\n }\n break;\n case 2:\n set(args[0], args[1]);\n break;\n }\n return this;\n },\n\n /**\n * Set a header for the upload request.\n * For more infomation, go to https://url.leanapp.cn/avfile-upload-headers\n *\n * @param {String} key header key\n * @param {String} value header value\n * @return {AV.File} this\n */\n setUploadHeader(key, value) {\n this._uploadHeaders[key] = value;\n return this;\n },\n\n /**\n * <p>Returns the file's metadata JSON object if no arguments is given.Returns the\n * metadata value if a key is given.Set metadata value if key and value are both given.</p>\n * <p><pre>\n * var metadata = file.metaData(); //Get metadata JSON object.\n * var size = file.metaData('size'); // Get the size metadata value.\n * file.metaData('format', 'jpeg'); //set metadata attribute and value.\n *</pre></p>\n * @return {Object} The file's metadata JSON object.\n * @param {String} attr an optional metadata key.\n * @param {Object} value an optional metadata value.\n **/\n metaData(attr, value) {\n if (attr && value) {\n this.attributes.metaData[attr] = value;\n return this;\n } else if (attr && !value) {\n return this.attributes.metaData[attr];\n } else {\n return this.attributes.metaData;\n }\n },\n\n /**\n * 如果文件是图片,获取图片的缩略图URL。可以传入宽度、高度、质量、格式等参数。\n * @return {String} 缩略图URL\n * @param {Number} width 宽度,单位:像素\n * @param {Number} heigth 高度,单位:像素\n * @param {Number} quality 质量,1-100的数字,默认100\n * @param {Number} scaleToFit 是否将图片自适应大小。默认为true。\n * @param {String} fmt 格式,默认为png,也可以为jpeg,gif等格式。\n */\n\n thumbnailURL(\n width,\n height,\n quality = 100,\n scaleToFit = true,\n fmt = 'png'\n ) {\n const url = this.attributes.url;\n if (!url) {\n throw new Error('Invalid url.');\n }\n if (!width || !height || width <= 0 || height <= 0) {\n throw new Error('Invalid width or height value.');\n }\n if (quality <= 0 || quality > 100) {\n throw new Error('Invalid quality value.');\n }\n const mode = scaleToFit ? 2 : 1;\n return (\n url +\n '?imageView/' +\n mode +\n '/w/' +\n width +\n '/h/' +\n height +\n '/q/' +\n quality +\n '/format/' +\n fmt\n );\n },\n\n /**\n * Returns the file's size.\n * @return {Number} The file's size in bytes.\n **/\n size() {\n return this.metaData().size;\n },\n\n /**\n * Returns the file's owner.\n * @return {String} The file's owner id.\n */\n ownerId() {\n return this.metaData().owner;\n },\n\n /**\n * Destroy the file.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy(options) {\n if (!this.id) {\n return Promise.reject(new Error('The file id does not eixst.'));\n }\n var request = AVRequest(\n 'files',\n null,\n this.id,\n 'DELETE',\n null,\n options\n );\n return request;\n },\n\n /**\n * Request Qiniu upload token\n * @param {string} type\n * @return {Promise} Resolved with the response\n * @private\n */\n _fileToken(type, authOptions) {\n let name = this.attributes.name;\n\n let extName = extname(name);\n if (!extName && this._extName) {\n name += this._extName;\n extName = this._extName;\n }\n const data = {\n name,\n keep_file_name: authOptions.keepFileName,\n key: authOptions.key,\n ACL: this._acl,\n mime_type: type,\n metaData: this.attributes.metaData,\n };\n return AVRequest('fileTokens', null, null, 'POST', data, authOptions);\n },\n\n /**\n * @callback UploadProgressCallback\n * @param {XMLHttpRequestProgressEvent} event - The progress event with 'loaded' and 'total' attributes\n */\n /**\n * Saves the file to the AV cloud.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {UploadProgressCallback} [options.onprogress] 文件上传进度,在 Node.js 中无效,回调参数说明详见 {@link UploadProgressCallback}。\n * @param {boolean} [options.keepFileName = false] 保留下载文件的文件名。\n * @param {string} [options.key] 指定文件的 key。设置该选项需要使用 masterKey\n * @return {Promise} Promise that is resolved when the save finishes.\n */\n save(options = {}) {\n if (this.id) {\n throw new Error('File is already saved.');\n }\n if (!this._previousSave) {\n if (this._data) {\n let mimeType = this.get('mime_type');\n this._previousSave = this._fileToken(mimeType, options).then(\n uploadInfo => {\n if (uploadInfo.mime_type) {\n mimeType = uploadInfo.mime_type;\n this.set('mime_type', mimeType);\n }\n this._token = uploadInfo.token;\n return Promise.resolve()\n .then(() => {\n const data = this._data;\n if (data && data.base64) {\n return parseBase64(data.base64, mimeType);\n }\n if (data && data.blob) {\n if (!data.blob.type && mimeType) {\n data.blob.type = mimeType;\n }\n if (!data.blob.name) {\n data.blob.name = this.get('name');\n }\n return data.blob;\n }\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return data;\n }\n throw new TypeError('malformed file data');\n })\n .then(data => {\n const _options = _.extend({}, options);\n // filter out download progress events\n if (options.onprogress) {\n _options.onprogress = event => {\n if (event.direction === 'download') return;\n return options.onprogress(event);\n };\n }\n switch (uploadInfo.provider) {\n case 's3':\n return s3(uploadInfo, data, this, _options);\n case 'qcloud':\n return cos(uploadInfo, data, this, _options);\n case 'qiniu':\n default:\n return qiniu(uploadInfo, data, this, _options);\n }\n })\n .then(tap(() => this._callback(true)), error => {\n this._callback(false);\n throw error;\n });\n }\n );\n } else if (\n this.attributes.url &&\n this.attributes.metaData.__source === 'external'\n ) {\n // external link file.\n const data = {\n name: this.attributes.name,\n ACL: this._acl,\n metaData: this.attributes.metaData,\n mime_type: this.mimeType,\n url: this.attributes.url,\n };\n this._previousSave = AVRequest(\n 'files',\n null,\n null,\n 'post',\n data,\n options\n ).then(response => {\n this.id = response.objectId;\n return this;\n });\n }\n }\n return this._previousSave;\n },\n\n _callback(success) {\n AVRequest('fileCallback', null, null, 'post', {\n token: this._token,\n result: success,\n }).catch(debug);\n delete this._token;\n delete this._data;\n },\n\n /**\n * fetch the file from server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch(fetchOptions, options) {\n if (!this.id) {\n throw new Error('Cannot fetch unsaved file');\n }\n var request = AVRequest(\n 'files',\n null,\n this.id,\n 'GET',\n transformFetchOptions(fetchOptions),\n options\n );\n return request.then(this._finishFetch.bind(this));\n },\n _finishFetch(response) {\n var value = AV.Object.prototype.parse(response);\n value.attributes = {\n name: value.name,\n url: value.url,\n mime_type: value.mime_type,\n bucket: value.bucket,\n };\n value.attributes.metaData = value.metaData || {};\n value.id = value.objectId;\n // clean\n delete value.objectId;\n delete value.metaData;\n delete value.url;\n delete value.name;\n delete value.mime_type;\n delete value.bucket;\n _.extend(this, value);\n return this;\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/file.js","const { getAdapter } = require('../adapter');\nconst debug = require('debug')('cos');\n\nmodule.exports = function(uploadInfo, data, file, saveOptions = {}) {\n const url =\n uploadInfo.upload_url + '?sign=' + encodeURIComponent(uploadInfo.token);\n const fileFormData = {\n field: 'fileContent',\n data,\n name: file.attributes.name,\n };\n const options = {\n headers: file._uploadHeaders,\n data: {\n op: 'upload',\n },\n onprogress: saveOptions.onprogress,\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n const upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(\n response => {\n debug(response.status, response.data);\n if (response.ok === false) {\n const error = new Error(response.status);\n error.response = response;\n throw error;\n }\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n },\n error => {\n const { response } = error;\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n throw error;\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/uploader/cos.js","const { getAdapter } = require('../adapter');\nconst debug = require('debug')('leancloud:qiniu');\nconst ajax = require('../utils/ajax');\nconst btoa = require('../utils/btoa');\n\nconst SHARD_THRESHOLD = 1024 * 1024 * 64;\n\nconst CHUNK_SIZE = 1024 * 1024 * 16;\n\nfunction upload(uploadInfo, data, file, saveOptions = {}) {\n // Get the uptoken to upload files to qiniu.\n const uptoken = uploadInfo.token;\n const url = uploadInfo.upload_url || 'https://upload.qiniup.com';\n const fileFormData = {\n field: 'file',\n data,\n name: file.attributes.name,\n };\n const options = {\n headers: file._uploadHeaders,\n data: {\n name: file.attributes.name,\n key: uploadInfo.key,\n token: uptoken,\n },\n onprogress: saveOptions.onprogress,\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n const upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(\n response => {\n debug(response.status, response.data);\n if (response.ok === false) {\n let message = response.status;\n if (response.data) {\n if (response.data.error) {\n message = response.data.error;\n } else {\n message = JSON.stringify(response.data);\n }\n }\n const error = new Error(message);\n error.response = response;\n throw error;\n }\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n },\n error => {\n const { response } = error;\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n throw error;\n }\n );\n}\n\nfunction urlSafeBase64(string) {\n const base64 = btoa(unescape(encodeURIComponent(string)));\n let result = '';\n for (const ch of base64) {\n switch (ch) {\n case '+':\n result += '-';\n break;\n case '/':\n result += '_';\n break;\n default:\n result += ch;\n }\n }\n return result;\n}\n\nclass ShardUploader {\n constructor(uploadInfo, data, file, saveOptions) {\n this.uploadInfo = uploadInfo;\n this.data = data;\n this.file = file;\n this.size = undefined;\n this.offset = 0;\n this.uploadedChunks = 0;\n\n const key = urlSafeBase64(uploadInfo.key);\n const uploadURL = uploadInfo.upload_url || 'https://upload.qiniup.com';\n this.baseURL = `${uploadURL}/buckets/${uploadInfo.bucket}/objects/${key}/uploads`;\n this.upToken = 'UpToken ' + uploadInfo.token;\n\n this.uploaded = 0;\n if (saveOptions && saveOptions.onprogress) {\n this.onProgress = ({ loaded }) => {\n loaded += this.uploadedChunks * CHUNK_SIZE;\n if (loaded <= this.uploaded) {\n return;\n }\n if (this.size) {\n saveOptions.onprogress({\n loaded,\n total: this.size,\n percent: (loaded / this.size) * 100,\n });\n } else {\n saveOptions.onprogress({ loaded });\n }\n this.uploaded = loaded;\n };\n }\n }\n\n /**\n * @returns {Promise<string>}\n */\n getUploadId() {\n return ajax({\n method: 'POST',\n url: this.baseURL,\n headers: {\n Authorization: this.upToken,\n },\n }).then(res => res.uploadId);\n }\n\n getChunk() {\n throw new Error('Not implemented');\n }\n\n /**\n * @param {string} uploadId\n * @param {number} partNumber\n * @param {any} data\n * @returns {Promise<{ partNumber: number, etag: string }>}\n */\n uploadPart(uploadId, partNumber, data) {\n return ajax({\n method: 'PUT',\n url: `${this.baseURL}/${uploadId}/${partNumber}`,\n headers: {\n Authorization: this.upToken,\n },\n data,\n onprogress: this.onProgress,\n }).then(({ etag }) => ({ partNumber, etag }));\n }\n\n stopUpload(uploadId) {\n return ajax({\n method: 'DELETE',\n url: `${this.baseURL}/${uploadId}`,\n headers: {\n Authorization: this.upToken,\n },\n });\n }\n\n upload() {\n const parts = [];\n return this.getUploadId()\n .then(uploadId => {\n const uploadPart = () => {\n return Promise.resolve(this.getChunk())\n .then(chunk => {\n if (!chunk) {\n return;\n }\n const partNumber = parts.length + 1;\n return this.uploadPart(uploadId, partNumber, chunk).then(part => {\n parts.push(part);\n this.uploadedChunks++;\n return uploadPart();\n });\n })\n .catch(error =>\n this.stopUpload(uploadId).then(() => Promise.reject(error))\n );\n };\n\n return uploadPart().then(() =>\n ajax({\n method: 'POST',\n url: `${this.baseURL}/${uploadId}`,\n headers: {\n Authorization: this.upToken,\n },\n data: {\n parts,\n fname: this.file.attributes.name,\n mimeType: this.file.attributes.mime_type,\n },\n })\n );\n })\n .then(() => {\n this.file.attributes.url = this.uploadInfo.url;\n this.file._bucket = this.uploadInfo.bucket;\n this.file.id = this.uploadInfo.objectId;\n return this.file;\n });\n }\n}\n\nclass BlobUploader extends ShardUploader {\n constructor(uploadInfo, data, file, saveOptions) {\n super(uploadInfo, data, file, saveOptions);\n this.size = data.size;\n }\n\n /**\n * @returns {Blob | null}\n */\n getChunk() {\n if (this.offset >= this.size) {\n return null;\n }\n const chunk = this.data.slice(this.offset, this.offset + CHUNK_SIZE);\n this.offset += chunk.size;\n return chunk;\n }\n}\n\n\n\nfunction isBlob(data) {\n return typeof Blob !== 'undefined' && data instanceof Blob;\n}\n\n\n\nmodule.exports = function(uploadInfo, data, file, saveOptions = {}) {\n if (isBlob(data) && data.size >= SHARD_THRESHOLD) {\n return new BlobUploader(uploadInfo, data, file, saveOptions).upload();\n }\n return upload(uploadInfo, data, file, saveOptions);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/uploader/qiniu.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\n// module id = 294\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/inherits.js\n// module id = 295\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/set-prototype-of.js\n// module id = 296\n// module chunks = 0 1","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/set-prototype-of.js\n// module id = 297\n// module chunks = 0 1","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.set-prototype-of.js\n// module id = 298\n// module chunks = 0 1","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-proto.js\n// module id = 299\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/create.js\n// module id = 300\n// module chunks = 0 1","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/create.js\n// module id = 301\n// module chunks = 0 1","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.create.js\n// module id = 302\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/classCallCheck.js\n// module id = 303\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/createClass.js\n// module id = 304\n// module chunks = 0 1","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/get-iterator.js\n// module id = 305\n// module chunks = 0 1","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/core.get-iterator.js\n// module id = 306\n// module chunks = 0 1","// base64 character set, plus padding character (=)\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nmodule.exports = string => {\n let result = '';\n\n for (let i = 0; i < string.length; ) {\n const a = string.charCodeAt(i++);\n const b = string.charCodeAt(i++);\n const c = string.charCodeAt(i++);\n if (a > 255 || b > 255 || c > 255) {\n throw new TypeError(\n 'Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.'\n );\n }\n\n const bitmap = (a << 16) | (b << 8) | c;\n result +=\n b64.charAt((bitmap >> 18) & 63) +\n b64.charAt((bitmap >> 12) & 63) +\n b64.charAt((bitmap >> 6) & 63) +\n b64.charAt(bitmap & 63);\n }\n\n // To determine the final padding\n const rest = string.length % 3;\n // If there's need of padding, replace the last 'A's with equal signs\n return rest ? result.slice(0, rest - 3) + '==='.substring(rest) : result;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/btoa.js","const _ = require('underscore');\nconst ajax = require('../utils/ajax');\n\nmodule.exports = function upload(uploadInfo, data, file, saveOptions = {}) {\n\n return ajax({\n url: uploadInfo.upload_url,\n method: 'PUT',\n data,\n headers: _.extend(\n {\n 'Content-Type': file.get('mime_type'),\n 'Cache-Control': 'public, max-age=31536000',\n },\n file._uploadHeaders\n ),\n onprogress: saveOptions.onprogress,\n }).then(() => {\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/uploader/s3.js","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/md5/md5.js\n// module id = 309\n// module chunks = 0 1","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/crypt/crypt.js\n// module id = 310\n// module chunks = 0 1","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-buffer/index.js\n// module id = 311\n// module chunks = 0 1","var dataURItoBlob = function(dataURI, type) {\n var byteString;\n\n // 传入的 base64,不是 dataURL\n if (dataURI.indexOf('base64') < 0) {\n byteString = atob(dataURI);\n } else if (dataURI.split(',')[0].indexOf('base64') >= 0) {\n type =\n type ||\n dataURI\n .split(',')[0]\n .split(':')[1]\n .split(';')[0];\n byteString = atob(dataURI.split(',')[1]);\n } else {\n byteString = unescape(dataURI.split(',')[1]);\n }\n var ia = new Uint8Array(byteString.length);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ia], { type });\n};\n\nmodule.exports = dataURItoBlob;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/parse-base64-browser.js","const _ = require('underscore');\nconst AVError = require('./error');\nconst { _request } = require('./request');\nconst {\n isNullOrUndefined,\n ensureArray,\n transformFetchOptions,\n setValue,\n findValue,\n isPlainObject,\n continueWhile,\n} = require('./utils');\n\nconst recursiveToPointer = value => {\n if (_.isArray(value)) return value.map(recursiveToPointer);\n if (isPlainObject(value)) return _.mapObject(value, recursiveToPointer);\n if (_.isObject(value) && value._toPointer) return value._toPointer();\n return value;\n};\n\nconst RESERVED_KEYS = ['objectId', 'createdAt', 'updatedAt'];\nconst checkReservedKey = key => {\n if (RESERVED_KEYS.indexOf(key) !== -1) {\n throw new Error(`key[${key}] is reserved`);\n }\n};\n\nconst handleBatchResults = results => {\n const firstError = _.find(results, result => result instanceof Error);\n if (!firstError) {\n return results;\n }\n const error = new AVError(firstError.code, firstError.message);\n error.results = results;\n throw error;\n};\n\n// Helper function to get a value from a Backbone object as a property\n// or as a function.\nfunction getValue(object, prop) {\n if (!(object && object[prop])) {\n return null;\n }\n return _.isFunction(object[prop]) ? object[prop]() : object[prop];\n}\n\n// AV.Object is analogous to the Java AVObject.\n// It also implements the same interface as a Backbone model.\n\nmodule.exports = function(AV) {\n /**\n * Creates a new model with defined attributes. A client id (cid) is\n * automatically generated and assigned for you.\n *\n * <p>You won't normally call this method directly. It is recommended that\n * you use a subclass of <code>AV.Object</code> instead, created by calling\n * <code>extend</code>.</p>\n *\n * <p>However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:<pre>\n * var object = new AV.Object(\"ClassName\");\n * </pre>\n * That is basically equivalent to:<pre>\n * var MyClass = AV.Object.extend(\"ClassName\");\n * var object = new MyClass();\n * </pre></p>\n *\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @see AV.Object.extend\n *\n * @class\n *\n * <p>The fundamental unit of AV data, which implements the Backbone Model\n * interface.</p>\n */\n AV.Object = function(attributes, options) {\n // Allow new AV.Object(\"ClassName\") as a shortcut to _create.\n if (_.isString(attributes)) {\n return AV.Object._create.apply(this, arguments);\n }\n\n attributes = attributes || {};\n if (options && options.parse) {\n attributes = this.parse(attributes);\n attributes = this._mergeMagicFields(attributes);\n }\n var defaults = getValue(this, 'defaults');\n if (defaults) {\n attributes = _.extend({}, defaults, attributes);\n }\n if (options && options.collection) {\n this.collection = options.collection;\n }\n\n this._serverData = {}; // The last known data for this object from cloud.\n this._opSetQueue = [{}]; // List of sets of changes to the data.\n this._flags = {};\n this.attributes = {}; // The best estimate of this's current data.\n\n this._hashedJSON = {}; // Hash of values of containers at last save.\n this._escapedAttributes = {};\n this.cid = _.uniqueId('c');\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this.set(attributes, { silent: true });\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this._hasData = true;\n this._previousAttributes = _.clone(this.attributes);\n this.initialize.apply(this, arguments);\n };\n\n /**\n * @lends AV.Object.prototype\n * @property {String} id The objectId of the AV Object.\n */\n\n /**\n * Saves the given list of AV.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * @example\n * AV.Object.saveAll([object1, object2, ...]).then(function(list) {\n * // All the objects were saved.\n * }, function(error) {\n * // An error occurred while saving one of the objects.\n * });\n *\n * @param {Array} list A list of <code>AV.Object</code>.\n */\n AV.Object.saveAll = function(list, options) {\n return AV.Object._deepSaveAsync(list, null, options);\n };\n\n /**\n * Fetch the given list of AV.Object.\n *\n * @param {AV.Object[]} objects A list of <code>AV.Object</code>\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object[]>} The given list of <code>AV.Object</code>, updated\n */\n\n AV.Object.fetchAll = (objects, options) =>\n Promise.resolve()\n .then(() =>\n _request(\n 'batch',\n null,\n null,\n 'POST',\n {\n requests: _.map(objects, object => {\n if (!object.className)\n throw new Error('object must have className to fetch');\n if (!object.id) throw new Error('object must have id to fetch');\n if (object.dirty())\n throw new Error('object is modified but not saved');\n return {\n method: 'GET',\n path: `/1.1/classes/${object.className}/${object.id}`,\n };\n }),\n },\n options\n )\n )\n .then(function(response) {\n const results = _.map(objects, function(object, i) {\n if (response[i].success) {\n const fetchedAttrs = object.parse(response[i].success);\n object._cleanupUnsetKeys(fetchedAttrs);\n object._finishFetch(fetchedAttrs);\n return object;\n }\n if (response[i].success === null) {\n return new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n }\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n\n // Attach all inheritable methods to the AV.Object prototype.\n _.extend(\n AV.Object.prototype,\n AV.Events,\n /** @lends AV.Object.prototype */ {\n _fetchWhenSave: false,\n\n /**\n * Initialize is an empty function by default. Override it with your own\n * initialization logic.\n */\n initialize: function() {},\n\n /**\n * Set whether to enable fetchWhenSave option when updating object.\n * When set true, SDK would fetch the latest object after saving.\n * Default is false.\n *\n * @deprecated use AV.Object#save with options.fetchWhenSave instead\n * @param {boolean} enable true to enable fetchWhenSave option.\n */\n fetchWhenSave: function(enable) {\n console.warn(\n 'AV.Object#fetchWhenSave is deprecated, use AV.Object#save with options.fetchWhenSave instead.'\n );\n if (!_.isBoolean(enable)) {\n throw new Error('Expect boolean value for fetchWhenSave');\n }\n this._fetchWhenSave = enable;\n },\n\n /**\n * Returns the object's objectId.\n * @return {String} the objectId.\n */\n getObjectId: function() {\n return this.id;\n },\n\n /**\n * Returns the object's createdAt attribute.\n * @return {Date}\n */\n getCreatedAt: function() {\n return this.createdAt;\n },\n\n /**\n * Returns the object's updatedAt attribute.\n * @return {Date}\n */\n getUpdatedAt: function() {\n return this.updatedAt;\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function(key, holder, seenObjects = []) {\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Returns a JSON version of the object with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON(seenObjects = []) {\n return this._toFullJSON(seenObjects);\n },\n\n _toFullJSON: function(seenObjects, full = true) {\n var json = _.clone(this.attributes);\n if (_.isArray(seenObjects)) {\n var newSeenObjects = seenObjects.concat(this);\n }\n AV._objectEach(json, function(val, key) {\n json[key] = AV._encode(val, newSeenObjects, undefined, full);\n });\n AV._objectEach(this._operations, function(val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n ['createdAt', 'updatedAt'].forEach(key => {\n if (_.has(this, key)) {\n const val = this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n if (full) {\n json.__type = 'Object';\n if (_.isArray(seenObjects) && seenObjects.length)\n json.__type = 'Pointer';\n json.className = this.className;\n }\n return json;\n },\n\n /**\n * Updates _hashedJSON to reflect the current state of this object.\n * Adds any changed hash values to the set of pending changes.\n * @private\n */\n _refreshCache: function() {\n var self = this;\n if (self._refreshingCache) {\n return;\n }\n self._refreshingCache = true;\n AV._objectEach(this.attributes, function(value, key) {\n if (value instanceof AV.Object) {\n value._refreshCache();\n } else if (_.isObject(value)) {\n if (self._resetCacheForKey(key)) {\n self.set(key, new AV.Op.Set(value), { silent: true });\n }\n }\n });\n delete self._refreshingCache;\n },\n\n /**\n * Returns true if this object has been modified since its last\n * save/refresh. If an attribute is specified, it returns true only if that\n * particular attribute has been modified since the last save/refresh.\n * @param {String} attr An attribute name (optional).\n * @return {Boolean}\n */\n dirty: function(attr) {\n this._refreshCache();\n\n var currentChanges = _.last(this._opSetQueue);\n\n if (attr) {\n return currentChanges[attr] ? true : false;\n }\n if (!this.id) {\n return true;\n }\n if (_.keys(currentChanges).length > 0) {\n return true;\n }\n return false;\n },\n\n /**\n * Returns the keys of the modified attribute since its last save/refresh.\n * @return {String[]}\n */\n dirtyKeys: function() {\n this._refreshCache();\n var currentChanges = _.last(this._opSetQueue);\n return _.keys(currentChanges);\n },\n\n /**\n * Gets a Pointer referencing this Object.\n * @private\n */\n _toPointer: function() {\n // if (!this.id) {\n // throw new Error(\"Can't serialize an unsaved AV.Object\");\n // }\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id,\n };\n },\n\n /**\n * Gets the value of an attribute.\n * @param {String} attr The string name of an attribute.\n */\n get: function(attr) {\n switch (attr) {\n case 'objectId':\n return this.id;\n case 'createdAt':\n case 'updatedAt':\n return this[attr];\n default:\n return this.attributes[attr];\n }\n },\n\n /**\n * Gets a relation on the given class for the attribute.\n * @param {String} attr The attribute to get the relation for.\n * @return {AV.Relation}\n */\n relation: function(attr) {\n var value = this.get(attr);\n if (value) {\n if (!(value instanceof AV.Relation)) {\n throw new Error('Called relation() on non-relation field ' + attr);\n }\n value._ensureParentAndKey(this, attr);\n return value;\n } else {\n return new AV.Relation(this, attr);\n }\n },\n\n /**\n * Gets the HTML-escaped value of an attribute.\n */\n escape: function(attr) {\n var html = this._escapedAttributes[attr];\n if (html) {\n return html;\n }\n var val = this.attributes[attr];\n var escaped;\n if (isNullOrUndefined(val)) {\n escaped = '';\n } else {\n escaped = _.escape(val.toString());\n }\n this._escapedAttributes[attr] = escaped;\n return escaped;\n },\n\n /**\n * Returns <code>true</code> if the attribute contains a value that is not\n * null or undefined.\n * @param {String} attr The string name of the attribute.\n * @return {Boolean}\n */\n has: function(attr) {\n return !isNullOrUndefined(this.attributes[attr]);\n },\n\n /**\n * Pulls \"special\" fields like objectId, createdAt, etc. out of attrs\n * and puts them on \"this\" directly. Removes them from attrs.\n * @param attrs - A dictionary with the data for this AV.Object.\n * @private\n */\n _mergeMagicFields: function(attrs) {\n // Check for changes of magic fields.\n var model = this;\n var specialFields = ['objectId', 'createdAt', 'updatedAt'];\n AV._arrayEach(specialFields, function(attr) {\n if (attrs[attr]) {\n if (attr === 'objectId') {\n model.id = attrs[attr];\n } else if (\n (attr === 'createdAt' || attr === 'updatedAt') &&\n !_.isDate(attrs[attr])\n ) {\n model[attr] = AV._parseDate(attrs[attr]);\n } else {\n model[attr] = attrs[attr];\n }\n delete attrs[attr];\n }\n });\n return attrs;\n },\n\n /**\n * Returns the json to be sent to the server.\n * @private\n */\n _startSave: function() {\n this._opSetQueue.push({});\n },\n\n /**\n * Called when a save fails because of an error. Any changes that were part\n * of the save need to be merged with changes made after the save. This\n * might throw an exception is you do conflicting operations. For example,\n * if you do:\n * object.set(\"foo\", \"bar\");\n * object.set(\"invalid field name\", \"baz\");\n * object.save();\n * object.increment(\"foo\");\n * then this will throw when the save fails and the client tries to merge\n * \"bar\" with the +1.\n * @private\n */\n _cancelSave: function() {\n var failedChanges = _.first(this._opSetQueue);\n this._opSetQueue = _.rest(this._opSetQueue);\n var nextChanges = _.first(this._opSetQueue);\n AV._objectEach(failedChanges, function(op, key) {\n var op1 = failedChanges[key];\n var op2 = nextChanges[key];\n if (op1 && op2) {\n nextChanges[key] = op2._mergeWithPrevious(op1);\n } else if (op1) {\n nextChanges[key] = op1;\n }\n });\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a save completes successfully. This merges the changes that\n * were saved into the known server data, and overrides it with any data\n * sent directly from the server.\n * @private\n */\n _finishSave: function(serverData) {\n // Grab a copy of any object referenced by this object. These instances\n // may have already been fetched, and we don't want to lose their data.\n // Note that doing it like this means we will unify separate copies of the\n // same object, but that's a risk we have to take.\n var fetchedObjects = {};\n AV._traverse(this.attributes, function(object) {\n if (object instanceof AV.Object && object.id && object._hasData) {\n fetchedObjects[object.id] = object;\n }\n });\n\n var savedChanges = _.first(this._opSetQueue);\n this._opSetQueue = _.rest(this._opSetQueue);\n this._applyOpSet(savedChanges, this._serverData);\n this._mergeMagicFields(serverData);\n var self = this;\n AV._objectEach(serverData, function(value, key) {\n self._serverData[key] = AV._decode(value, key);\n\n // Look for any objects that might have become unfetched and fix them\n // by replacing their values with the previously observed values.\n var fetched = AV._traverse(self._serverData[key], function(object) {\n if (object instanceof AV.Object && fetchedObjects[object.id]) {\n return fetchedObjects[object.id];\n }\n });\n if (fetched) {\n self._serverData[key] = fetched;\n }\n });\n this._rebuildAllEstimatedData();\n const opSetQueue = this._opSetQueue.map(_.clone);\n this._refreshCache();\n this._opSetQueue = opSetQueue;\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a fetch or login is complete to set the known server data to\n * the given object.\n * @private\n */\n _finishFetch: function(serverData, hasData) {\n // Clear out any changes the user might have made previously.\n this._opSetQueue = [{}];\n\n // Bring in all the new server data.\n this._mergeMagicFields(serverData);\n var self = this;\n AV._objectEach(serverData, function(value, key) {\n self._serverData[key] = AV._decode(value, key);\n });\n\n // Refresh the attributes.\n this._rebuildAllEstimatedData();\n\n // Clear out the cache of mutable containers.\n this._refreshCache();\n this._opSetQueue = [{}];\n\n this._hasData = hasData;\n },\n\n /**\n * Applies the set of AV.Op in opSet to the object target.\n * @private\n */\n _applyOpSet: function(opSet, target) {\n var self = this;\n AV._objectEach(opSet, function(change, key) {\n const [value, actualTarget, actualKey] = findValue(target, key);\n setValue(target, key, change._estimate(value, self, key));\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n });\n },\n\n /**\n * Replaces the cached value for key with the current value.\n * Returns true if the new value is different than the old value.\n * @private\n */\n _resetCacheForKey: function(key) {\n var value = this.attributes[key];\n if (\n _.isObject(value) &&\n !(value instanceof AV.Object) &&\n !(value instanceof AV.File)\n ) {\n var json = JSON.stringify(recursiveToPointer(value));\n if (this._hashedJSON[key] !== json) {\n var wasSet = !!this._hashedJSON[key];\n this._hashedJSON[key] = json;\n return wasSet;\n }\n }\n return false;\n },\n\n /**\n * Populates attributes[key] by starting with the last known data from the\n * server, and applying all of the local changes that have been made to that\n * key since then.\n * @private\n */\n _rebuildEstimatedDataForKey: function(key) {\n var self = this;\n delete this.attributes[key];\n if (this._serverData[key]) {\n this.attributes[key] = this._serverData[key];\n }\n AV._arrayEach(this._opSetQueue, function(opSet) {\n var op = opSet[key];\n if (op) {\n const [value, actualTarget, actualKey, firstKey] = findValue(\n self.attributes,\n key\n );\n setValue(self.attributes, key, op._estimate(value, self, key));\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n self._resetCacheForKey(firstKey);\n }\n });\n },\n\n /**\n * Populates attributes by starting with the last known data from the\n * server, and applying all of the local changes that have been made since\n * then.\n * @private\n */\n _rebuildAllEstimatedData: function() {\n var self = this;\n\n var previousAttributes = _.clone(this.attributes);\n\n this.attributes = _.clone(this._serverData);\n AV._arrayEach(this._opSetQueue, function(opSet) {\n self._applyOpSet(opSet, self.attributes);\n AV._objectEach(opSet, function(op, key) {\n self._resetCacheForKey(key);\n });\n });\n\n // Trigger change events for anything that changed because of the fetch.\n AV._objectEach(previousAttributes, function(oldValue, key) {\n if (self.attributes[key] !== oldValue) {\n self.trigger('change:' + key, self, self.attributes[key], {});\n }\n });\n AV._objectEach(this.attributes, function(newValue, key) {\n if (!_.has(previousAttributes, key)) {\n self.trigger('change:' + key, self, newValue, {});\n }\n });\n },\n\n /**\n * Sets a hash of model attributes on the object, firing\n * <code>\"change\"</code> unless you choose to silence it.\n *\n * <p>You can call it with an object containing keys and values, or with one\n * key and value. For example:</p>\n *\n * @example\n * gameTurn.set({\n * player: player1,\n * diceRoll: 2\n * });\n *\n * game.set(\"currentPlayer\", player2);\n *\n * game.set(\"finished\", true);\n *\n * @param {String} key The key to set.\n * @param {Any} value The value to give it.\n * @param {Object} [options]\n * @param {Boolean} [options.silent]\n * @return {AV.Object} self if succeeded, throws if the value is not valid.\n * @see AV.Object#validate\n */\n set: function(key, value, options) {\n var attrs;\n if (_.isObject(key) || isNullOrUndefined(key)) {\n attrs = _.mapObject(key, function(v, k) {\n checkReservedKey(k);\n return AV._decode(v, k);\n });\n options = value;\n } else {\n attrs = {};\n checkReservedKey(key);\n attrs[key] = AV._decode(value, key);\n }\n\n // Extract attributes and options.\n options = options || {};\n if (!attrs) {\n return this;\n }\n if (attrs instanceof AV.Object) {\n attrs = attrs.attributes;\n }\n\n // If the unset option is used, every attribute should be a Unset.\n if (options.unset) {\n AV._objectEach(attrs, function(unused_value, key) {\n attrs[key] = new AV.Op.Unset();\n });\n }\n\n // Apply all the attributes to get the estimated values.\n var dataToValidate = _.clone(attrs);\n var self = this;\n AV._objectEach(dataToValidate, function(value, key) {\n if (value instanceof AV.Op) {\n dataToValidate[key] = value._estimate(\n self.attributes[key],\n self,\n key\n );\n if (dataToValidate[key] === AV.Op._UNSET) {\n delete dataToValidate[key];\n }\n }\n });\n\n // Run validation.\n this._validate(attrs, options);\n\n options.changes = {};\n var escaped = this._escapedAttributes;\n\n // Update attributes.\n AV._arrayEach(_.keys(attrs), function(attr) {\n var val = attrs[attr];\n\n // If this is a relation object we need to set the parent correctly,\n // since the location where it was parsed does not have access to\n // this object.\n if (val instanceof AV.Relation) {\n val.parent = self;\n }\n\n if (!(val instanceof AV.Op)) {\n val = new AV.Op.Set(val);\n }\n\n // See if this change will actually have any effect.\n var isRealChange = true;\n if (\n val instanceof AV.Op.Set &&\n _.isEqual(self.attributes[attr], val.value)\n ) {\n isRealChange = false;\n }\n\n if (isRealChange) {\n delete escaped[attr];\n if (options.silent) {\n self._silent[attr] = true;\n } else {\n options.changes[attr] = true;\n }\n }\n\n var currentChanges = _.last(self._opSetQueue);\n currentChanges[attr] = val._mergeWithPrevious(currentChanges[attr]);\n self._rebuildEstimatedDataForKey(attr);\n\n if (isRealChange) {\n self.changed[attr] = self.attributes[attr];\n if (!options.silent) {\n self._pending[attr] = true;\n }\n } else {\n delete self.changed[attr];\n delete self._pending[attr];\n }\n });\n\n if (!options.silent) {\n this.change(options);\n }\n return this;\n },\n\n /**\n * Remove an attribute from the model, firing <code>\"change\"</code> unless\n * you choose to silence it. This is a noop if the attribute doesn't\n * exist.\n * @param key {String} The key.\n */\n unset: function(attr, options) {\n options = options || {};\n options.unset = true;\n return this.set(attr, null, options);\n },\n\n /**\n * Atomically increments the value of the given attribute the next time the\n * object is saved. If no amount is specified, 1 is used by default.\n *\n * @param key {String} The key.\n * @param amount {Number} The amount to increment by.\n */\n increment: function(attr, amount) {\n if (_.isUndefined(amount) || _.isNull(amount)) {\n amount = 1;\n }\n return this.set(attr, new AV.Op.Increment(amount));\n },\n\n /**\n * Atomically add an object to the end of the array associated with a given\n * key.\n * @param key {String} The key.\n * @param item {} The item to add.\n */\n add: function(attr, item) {\n return this.set(attr, new AV.Op.Add(ensureArray(item)));\n },\n\n /**\n * Atomically add an object to the array associated with a given key, only\n * if it is not already present in the array. The position of the insert is\n * not guaranteed.\n *\n * @param key {String} The key.\n * @param item {} The object to add.\n */\n addUnique: function(attr, item) {\n return this.set(attr, new AV.Op.AddUnique(ensureArray(item)));\n },\n\n /**\n * Atomically remove all instances of an object from the array associated\n * with a given key.\n *\n * @param key {String} The key.\n * @param item {} The object to remove.\n */\n remove: function(attr, item) {\n return this.set(attr, new AV.Op.Remove(ensureArray(item)));\n },\n\n /**\n * Atomically apply a \"bit and\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitAnd(attr, value) {\n return this.set(attr, new AV.Op.BitAnd(value));\n },\n\n /**\n * Atomically apply a \"bit or\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitOr(attr, value) {\n return this.set(attr, new AV.Op.BitOr(value));\n },\n\n /**\n * Atomically apply a \"bit xor\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitXor(attr, value) {\n return this.set(attr, new AV.Op.BitXor(value));\n },\n\n /**\n * Returns an instance of a subclass of AV.Op describing what kind of\n * modification has been performed on this field since the last time it was\n * saved. For example, after calling object.increment(\"x\"), calling\n * object.op(\"x\") would return an instance of AV.Op.Increment.\n *\n * @param key {String} The key.\n * @returns {AV.Op} The operation, or undefined if none.\n */\n op: function(attr) {\n return _.last(this._opSetQueue)[attr];\n },\n\n /**\n * Clear all attributes on the model, firing <code>\"change\"</code> unless\n * you choose to silence it.\n */\n clear: function(options) {\n options = options || {};\n options.unset = true;\n var keysToClear = _.extend(this.attributes, this._operations);\n return this.set(keysToClear, options);\n },\n\n /**\n * Clears any (or specific) changes to the model made since the last save.\n * @param {string|string[]} [keys] specify keys to revert.\n */\n revert(keys) {\n const lastOp = _.last(this._opSetQueue);\n const _keys = ensureArray(keys || _.keys(lastOp));\n _keys.forEach(key => {\n delete lastOp[key];\n });\n this._rebuildAllEstimatedData();\n return this;\n },\n\n /**\n * Returns a JSON-encoded set of operations to be sent with the next save\n * request.\n * @private\n */\n _getSaveJSON: function() {\n var json = _.clone(_.first(this._opSetQueue));\n AV._objectEach(json, function(op, key) {\n json[key] = op.toJSON();\n });\n return json;\n },\n\n /**\n * Returns true if this object can be serialized for saving.\n * @private\n */\n _canBeSerialized: function() {\n return AV.Object._canBeSerializedAsValue(this.attributes);\n },\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * triggering a <code>\"change\"</code> event.\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function(fetchOptions = {}, options) {\n if (!this.id) {\n throw new Error('Cannot fetch unsaved object');\n }\n var self = this;\n var request = _request(\n 'classes',\n this.className,\n this.id,\n 'GET',\n transformFetchOptions(fetchOptions),\n options\n );\n return request.then(function(response) {\n const fetchedAttrs = self.parse(response);\n self._cleanupUnsetKeys(\n fetchedAttrs,\n fetchOptions.keys\n ? ensureArray(fetchOptions.keys)\n .join(',')\n .split(',')\n : undefined\n );\n self._finishFetch(fetchedAttrs, true);\n return self;\n });\n },\n\n _cleanupUnsetKeys(fetchedAttrs, fetchedKeys = _.keys(this._serverData)) {\n _.forEach(fetchedKeys, key => {\n if (fetchedAttrs[key] === undefined) delete this._serverData[key];\n });\n },\n\n /**\n * Set a hash of model attributes, and save the model to the server.\n * updatedAt will be updated when the request returns.\n * You can either call it as:<pre>\n * object.save();</pre>\n * or<pre>\n * object.save(null, options);</pre>\n * or<pre>\n * object.save(attrs, options);</pre>\n * or<pre>\n * object.save(key, value, options);</pre>\n *\n * @example\n * gameTurn.save({\n * player: \"Jake Cutter\",\n * diceRoll: 2\n * }).then(function(gameTurnAgain) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of AVError.\n * });\n *\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} options.fetchWhenSave fetch and update object after save succeeded\n * @param {AV.Query} options.query Save object only when it matches the query\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n * @see AVError\n */\n save: function(arg1, arg2, arg3) {\n var attrs, current, options;\n if (_.isObject(arg1) || isNullOrUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n\n options = _.clone(options) || {};\n if (options.wait) {\n current = _.clone(this.attributes);\n }\n\n var setOptions = _.clone(options) || {};\n if (setOptions.wait) {\n setOptions.silent = true;\n }\n if (attrs) {\n this.set(attrs, setOptions);\n }\n\n var model = this;\n\n var unsavedChildren = [];\n var unsavedFiles = [];\n AV.Object._findUnsavedChildren(model, unsavedChildren, unsavedFiles);\n if (unsavedChildren.length + unsavedFiles.length > 1) {\n return AV.Object._deepSaveAsync(this, model, options);\n }\n\n this._startSave();\n this._saving = (this._saving || 0) + 1;\n\n this._allPreviousSaves = this._allPreviousSaves || Promise.resolve();\n this._allPreviousSaves = this._allPreviousSaves\n .catch(e => {})\n .then(function() {\n var method = model.id ? 'PUT' : 'POST';\n\n var json = model._getSaveJSON();\n var query = {};\n\n if (model._fetchWhenSave || options.fetchWhenSave) {\n query['new'] = 'true';\n }\n // user login option\n if (options._failOnNotExist) {\n query.failOnNotExist = 'true';\n }\n\n if (options.query) {\n var queryParams;\n if (typeof options.query._getParams === 'function') {\n queryParams = options.query._getParams();\n if (queryParams) {\n query.where = queryParams.where;\n }\n }\n if (!query.where) {\n var error = new Error('options.query is not an AV.Query');\n throw error;\n }\n }\n\n _.extend(json, model._flags);\n\n var route = 'classes';\n var className = model.className;\n if (model.className === '_User' && !model.id) {\n // Special-case user sign-up.\n route = 'users';\n className = null;\n }\n //hook makeRequest in options.\n var makeRequest = options._makeRequest || _request;\n var requestPromise = makeRequest(\n route,\n className,\n model.id,\n method,\n json,\n options,\n query\n );\n\n requestPromise = requestPromise.then(\n function(resp) {\n var serverAttrs = model.parse(resp);\n if (options.wait) {\n serverAttrs = _.extend(attrs || {}, serverAttrs);\n }\n model._finishSave(serverAttrs);\n if (options.wait) {\n model.set(current, setOptions);\n }\n return model;\n },\n function(error) {\n model._cancelSave();\n throw error;\n }\n );\n\n return requestPromise;\n });\n return this._allPreviousSaves;\n },\n\n /**\n * Destroy this model on the server if it was already persisted.\n * Optimistically removes the model from its collection, if it has one.\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} [options.wait] wait for the server to respond\n * before removal.\n *\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function(options) {\n options = options || {};\n var model = this;\n\n var triggerDestroy = function() {\n model.trigger('destroy', model, model.collection, options);\n };\n\n if (!this.id) {\n return triggerDestroy();\n }\n\n if (!options.wait) {\n triggerDestroy();\n }\n\n var request = _request(\n 'classes',\n this.className,\n this.id,\n 'DELETE',\n this._flags,\n options\n );\n return request.then(function() {\n if (options.wait) {\n triggerDestroy();\n }\n return model;\n });\n },\n\n /**\n * Converts a response into the hash of attributes to be set on the model.\n * @ignore\n */\n parse: function(resp) {\n var output = _.clone(resp);\n ['createdAt', 'updatedAt'].forEach(function(key) {\n if (output[key]) {\n output[key] = AV._parseDate(output[key]);\n }\n });\n if (output.createdAt && !output.updatedAt) {\n output.updatedAt = output.createdAt;\n }\n return output;\n },\n\n /**\n * Creates a new model with identical attributes to this one.\n * @return {AV.Object}\n */\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n /**\n * Returns true if this object has never been saved to AV.\n * @return {Boolean}\n */\n isNew: function() {\n return !this.id;\n },\n\n /**\n * Call this method to manually fire a `\"change\"` event for this model and\n * a `\"change:attribute\"` event for each changed attribute.\n * Calling this will cause all objects observing the model to update.\n */\n change: function(options) {\n options = options || {};\n var changing = this._changing;\n this._changing = true;\n\n // Silent changes become pending changes.\n var self = this;\n AV._objectEach(this._silent, function(attr) {\n self._pending[attr] = true;\n });\n\n // Silent changes are triggered.\n var changes = _.extend({}, options.changes, this._silent);\n this._silent = {};\n AV._objectEach(changes, function(unused_value, attr) {\n self.trigger('change:' + attr, self, self.get(attr), options);\n });\n if (changing) {\n return this;\n }\n\n // This is to get around lint not letting us make a function in a loop.\n var deleteChanged = function(value, attr) {\n if (!self._pending[attr] && !self._silent[attr]) {\n delete self.changed[attr];\n }\n };\n\n // Continue firing `\"change\"` events while there are pending changes.\n while (!_.isEmpty(this._pending)) {\n this._pending = {};\n this.trigger('change', this, options);\n // Pending and silent changes still remain.\n AV._objectEach(this.changed, deleteChanged);\n self._previousAttributes = _.clone(this.attributes);\n }\n\n this._changing = false;\n return this;\n },\n\n /**\n * Gets the previous value of an attribute, recorded at the time the last\n * <code>\"change\"</code> event was fired.\n * @param {String} attr Name of the attribute to get.\n */\n previous: function(attr) {\n if (!arguments.length || !this._previousAttributes) {\n return null;\n }\n return this._previousAttributes[attr];\n },\n\n /**\n * Gets all of the attributes of the model at the time of the previous\n * <code>\"change\"</code> event.\n * @return {Object}\n */\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n /**\n * Checks if the model is currently in a valid state. It's only possible to\n * get into an *invalid* state if you're using silent changes.\n * @return {Boolean}\n */\n isValid: function() {\n try {\n this.validate(this.attributes);\n } catch (error) {\n return false;\n }\n return true;\n },\n\n /**\n * You should not call this function directly unless you subclass\n * <code>AV.Object</code>, in which case you can override this method\n * to provide additional validation on <code>set</code> and\n * <code>save</code>. Your implementation should throw an Error if\n * the attrs is invalid\n *\n * @param {Object} attrs The current data to validate.\n * @see AV.Object#set\n */\n validate: function(attrs) {\n if (_.has(attrs, 'ACL') && !(attrs.ACL instanceof AV.ACL)) {\n throw new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n },\n\n /**\n * Run validation against a set of incoming attributes, returning `true`\n * if all is well. If a specific `error` callback has been passed,\n * call that instead of firing the general `\"error\"` event.\n * @private\n */\n _validate: function(attrs, options) {\n if (options.silent || !this.validate) {\n return;\n }\n attrs = _.extend({}, this.attributes, attrs);\n this.validate(attrs);\n },\n\n /**\n * Returns the ACL for this object.\n * @returns {AV.ACL} An instance of AV.ACL.\n * @see AV.Object#get\n */\n getACL: function() {\n return this.get('ACL');\n },\n\n /**\n * Sets the ACL to be used for this object.\n * @param {AV.ACL} acl An instance of AV.ACL.\n * @param {Object} options Optional Backbone-like options object to be\n * passed in to set.\n * @return {AV.Object} self\n * @see AV.Object#set\n */\n setACL: function(acl, options) {\n return this.set('ACL', acl, options);\n },\n\n disableBeforeHook: function() {\n this.ignoreHook('beforeSave');\n this.ignoreHook('beforeUpdate');\n this.ignoreHook('beforeDelete');\n },\n\n disableAfterHook: function() {\n this.ignoreHook('afterSave');\n this.ignoreHook('afterUpdate');\n this.ignoreHook('afterDelete');\n },\n\n ignoreHook: function(hookName) {\n if (\n !_.contains(\n [\n 'beforeSave',\n 'afterSave',\n 'beforeUpdate',\n 'afterUpdate',\n 'beforeDelete',\n 'afterDelete',\n ],\n hookName\n )\n ) {\n throw new Error('Unsupported hookName: ' + hookName);\n }\n\n if (!AV.hookKey) {\n throw new Error('ignoreHook required hookKey');\n }\n\n if (!this._flags.__ignore_hooks) {\n this._flags.__ignore_hooks = [];\n }\n\n this._flags.__ignore_hooks.push(hookName);\n },\n }\n );\n\n /**\n * Creates an instance of a subclass of AV.Object for the give classname\n * and id.\n * @param {String|Function} class the className or a subclass of AV.Object.\n * @param {String} id The object id of this model.\n * @return {AV.Object} A new subclass instance of AV.Object.\n */\n AV.Object.createWithoutData = (klass, id, hasData) => {\n let _klass;\n if (_.isString(klass)) {\n _klass = AV.Object._getSubclass(klass);\n } else if (klass.prototype && klass.prototype instanceof AV.Object) {\n _klass = klass;\n } else {\n throw new Error('class must be a string or a subclass of AV.Object.');\n }\n if (!id) {\n throw new TypeError('The objectId must be provided');\n }\n const object = new _klass();\n object.id = id;\n object._hasData = hasData;\n return object;\n };\n /**\n * Delete objects in batch.\n * @param {AV.Object[]} objects The <code>AV.Object</code> array to be deleted.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n AV.Object.destroyAll = function(objects, options = {}) {\n if (!objects || objects.length === 0) {\n return Promise.resolve();\n }\n const objectsByClassNameAndFlags = _.groupBy(objects, object =>\n JSON.stringify({\n className: object.className,\n flags: object._flags,\n })\n );\n const body = {\n requests: _.map(objectsByClassNameAndFlags, objects => {\n const ids = _.map(objects, 'id').join(',');\n return {\n method: 'DELETE',\n path: `/1.1/classes/${objects[0].className}/${ids}`,\n body: objects[0]._flags,\n };\n }),\n };\n return _request('batch', null, null, 'POST', body, options).then(\n response => {\n const firstError = _.find(response, result => !result.success);\n if (firstError)\n throw new AVError(firstError.error.code, firstError.error.error);\n return undefined;\n }\n );\n };\n\n /**\n * Returns the appropriate subclass for making new instances of the given\n * className string.\n * @private\n */\n AV.Object._getSubclass = function(className) {\n if (!_.isString(className)) {\n throw new Error('AV.Object._getSubclass requires a string argument.');\n }\n var ObjectClass = AV.Object._classMap[className];\n if (!ObjectClass) {\n ObjectClass = AV.Object.extend(className);\n AV.Object._classMap[className] = ObjectClass;\n }\n return ObjectClass;\n };\n\n /**\n * Creates an instance of a subclass of AV.Object for the given classname.\n * @private\n */\n AV.Object._create = function(className, attributes, options) {\n var ObjectClass = AV.Object._getSubclass(className);\n return new ObjectClass(attributes, options);\n };\n\n // Set up a map of className to class so that we can create new instances of\n // AV Objects from JSON automatically.\n AV.Object._classMap = {};\n\n AV.Object._extend = AV._extend;\n\n /**\n * Creates a new model with defined attributes,\n * It's the same with\n * <pre>\n * new AV.Object(attributes, options);\n * </pre>\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @return {AV.Object}\n * @since v0.4.4\n * @see AV.Object\n * @see AV.Object.extend\n */\n AV.Object['new'] = function(attributes, options) {\n return new AV.Object(attributes, options);\n };\n\n /**\n * Creates a new subclass of AV.Object for the given AV class name.\n *\n * <p>Every extension of a AV class will inherit from the most recent\n * previous extension of that class. When a AV.Object is automatically\n * created by parsing JSON, it will use the most recent extension of that\n * class.</p>\n *\n * @example\n * var MyClass = AV.Object.extend(\"MyClass\", {\n * // Instance properties\n * }, {\n * // Class properties\n * });\n *\n * @param {String} className The name of the AV class backing this model.\n * @param {Object} protoProps Instance properties to add to instances of the\n * class returned from this method.\n * @param {Object} classProps Class properties to add the class returned from\n * this method.\n * @return {Class} A new subclass of AV.Object.\n */\n AV.Object.extend = function(className, protoProps, classProps) {\n // Handle the case with only two args.\n if (!_.isString(className)) {\n if (className && _.has(className, 'className')) {\n return AV.Object.extend(className.className, className, protoProps);\n } else {\n throw new Error(\n \"AV.Object.extend's first argument should be the className.\"\n );\n }\n }\n\n // If someone tries to subclass \"User\", coerce it to the right type.\n if (className === 'User') {\n className = '_User';\n }\n\n var NewClassObject = null;\n if (_.has(AV.Object._classMap, className)) {\n var OldClassObject = AV.Object._classMap[className];\n // This new subclass has been told to extend both from \"this\" and from\n // OldClassObject. This is multiple inheritance, which isn't supported.\n // For now, let's just pick one.\n if (protoProps || classProps) {\n NewClassObject = OldClassObject._extend(protoProps, classProps);\n } else {\n return OldClassObject;\n }\n } else {\n protoProps = protoProps || {};\n protoProps._className = className;\n NewClassObject = this._extend(protoProps, classProps);\n }\n // Extending a subclass should reuse the classname automatically.\n NewClassObject.extend = function(arg0) {\n if (_.isString(arg0) || (arg0 && _.has(arg0, 'className'))) {\n return AV.Object.extend.apply(NewClassObject, arguments);\n }\n var newArguments = [className].concat(_.toArray(arguments));\n return AV.Object.extend.apply(NewClassObject, newArguments);\n };\n // Add the query property descriptor.\n Object.defineProperty(\n NewClassObject,\n 'query',\n Object.getOwnPropertyDescriptor(AV.Object, 'query')\n );\n NewClassObject['new'] = function(attributes, options) {\n return new NewClassObject(attributes, options);\n };\n AV.Object._classMap[className] = NewClassObject;\n return NewClassObject;\n };\n\n // ES6 class syntax support\n Object.defineProperty(AV.Object.prototype, 'className', {\n get: function() {\n const className =\n this._className ||\n this.constructor._LCClassName ||\n this.constructor.name;\n // If someone tries to subclass \"User\", coerce it to the right type.\n if (className === 'User') {\n return '_User';\n }\n return className;\n },\n });\n\n /**\n * Register a class.\n * If a subclass of <code>AV.Object</code> is defined with your own implement\n * rather then <code>AV.Object.extend</code>, the subclass must be registered.\n * @param {Function} klass A subclass of <code>AV.Object</code>\n * @param {String} [name] Specify the name of the class. Useful when the class might be uglified.\n * @example\n * class Person extend AV.Object {}\n * AV.Object.register(Person);\n */\n AV.Object.register = (klass, name) => {\n if (!(klass.prototype instanceof AV.Object)) {\n throw new Error('registered class is not a subclass of AV.Object');\n }\n const className = name || klass.name;\n if (!className.length) {\n throw new Error('registered class must be named');\n }\n if (name) {\n klass._LCClassName = name;\n }\n AV.Object._classMap[className] = klass;\n };\n\n /**\n * Get a new Query of the current class\n * @name query\n * @memberof AV.Object\n * @type AV.Query\n * @readonly\n * @since v3.1.0\n * @example\n * const Post = AV.Object.extend('Post');\n * Post.query.equalTo('author', 'leancloud').find().then();\n */\n Object.defineProperty(AV.Object, 'query', {\n get() {\n return new AV.Query(this.prototype.className);\n },\n });\n\n AV.Object._findUnsavedChildren = function(objects, children, files) {\n AV._traverse(objects, function(object) {\n if (object instanceof AV.Object) {\n if (object.dirty()) {\n children.push(object);\n }\n return;\n }\n\n if (object instanceof AV.File) {\n if (!object.id) {\n files.push(object);\n }\n return;\n }\n });\n };\n\n AV.Object._canBeSerializedAsValue = function(object) {\n var canBeSerializedAsValue = true;\n\n if (object instanceof AV.Object || object instanceof AV.File) {\n canBeSerializedAsValue = !!object.id;\n } else if (_.isArray(object)) {\n AV._arrayEach(object, function(child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n } else if (_.isObject(object)) {\n AV._objectEach(object, function(child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n }\n\n return canBeSerializedAsValue;\n };\n\n AV.Object._deepSaveAsync = function(object, model, options) {\n var unsavedChildren = [];\n var unsavedFiles = [];\n AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles);\n\n unsavedFiles = _.uniq(unsavedFiles);\n\n var promise = Promise.resolve();\n _.each(unsavedFiles, function(file) {\n promise = promise.then(function() {\n return file.save();\n });\n });\n\n var objects = _.uniq(unsavedChildren);\n var remaining = _.uniq(objects);\n\n return promise\n .then(function() {\n return continueWhile(\n function() {\n return remaining.length > 0;\n },\n function() {\n // Gather up all the objects that can be saved in this batch.\n var batch = [];\n var newRemaining = [];\n AV._arrayEach(remaining, function(object) {\n if (object._canBeSerialized()) {\n batch.push(object);\n } else {\n newRemaining.push(object);\n }\n });\n remaining = newRemaining;\n\n // If we can't save any objects, there must be a circular reference.\n if (batch.length === 0) {\n return Promise.reject(\n new AVError(\n AVError.OTHER_CAUSE,\n 'Tried to save a batch with a cycle.'\n )\n );\n }\n\n // Reserve a spot in every object's save queue.\n var readyToStart = Promise.resolve(\n _.map(batch, function(object) {\n return object._allPreviousSaves || Promise.resolve();\n })\n );\n\n // Save a single batch, whether previous saves succeeded or failed.\n const bathSavePromise = readyToStart.then(() =>\n _request(\n 'batch',\n null,\n null,\n 'POST',\n {\n requests: _.map(batch, function(object) {\n var method = object.id ? 'PUT' : 'POST';\n\n var json = object._getSaveJSON();\n\n _.extend(json, object._flags);\n\n var route = 'classes';\n var className = object.className;\n var path = `/${route}/${className}`;\n if (object.className === '_User' && !object.id) {\n // Special-case user sign-up.\n path = '/users';\n }\n\n var path = `/1.1${path}`;\n if (object.id) {\n path = path + '/' + object.id;\n }\n\n object._startSave();\n\n return {\n method: method,\n path: path,\n body: json,\n params:\n options && options.fetchWhenSave\n ? { fetchWhenSave: true }\n : undefined,\n };\n }),\n },\n options\n ).then(function(response) {\n const results = _.map(batch, function(object, i) {\n if (response[i].success) {\n object._finishSave(object.parse(response[i].success));\n return object;\n }\n object._cancelSave();\n return new AVError(\n response[i].error.code,\n response[i].error.error\n );\n });\n return handleBatchResults(results);\n })\n );\n AV._arrayEach(batch, function(object) {\n object._allPreviousSaves = bathSavePromise;\n });\n return bathSavePromise;\n }\n );\n })\n .then(function() {\n return object;\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/object.js","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js\n// module id = 314\n// module chunks = 0 1","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-own-property-descriptor.js\n// module id = 315\n// module chunks = 0 1","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js\n// module id = 316\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/slicedToArray.js\n// module id = 317\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/is-iterable.js\n// module id = 318\n// module chunks = 0 1","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/is-iterable.js\n// module id = 319\n// module chunks = 0 1","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/core.is-iterable.js\n// module id = 320\n// module chunks = 0 1","const _ = require('underscore');\nconst AVError = require('./error');\n\nmodule.exports = function(AV) {\n AV.Role = AV.Object.extend(\n '_Role',\n /** @lends AV.Role.prototype */ {\n // Instance Methods\n\n /**\n * Represents a Role on the AV server. Roles represent groupings of\n * Users for the purposes of granting permissions (e.g. specifying an ACL\n * for an Object). Roles are specified by their sets of child users and\n * child roles, all of which are granted any permissions that the parent\n * role has.\n *\n * <p>Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.</p>\n * An AV.Role is a local representation of a role persisted to the AV\n * cloud.\n * @class AV.Role\n * @param {String} name The name of the Role to create.\n * @param {AV.ACL} acl The ACL for this role.\n */\n constructor: function(name, acl) {\n if (_.isString(name)) {\n AV.Object.prototype.constructor.call(this, null, null);\n this.setName(name);\n } else {\n AV.Object.prototype.constructor.call(this, name, acl);\n }\n if (acl) {\n if (!(acl instanceof AV.ACL)) {\n throw new TypeError('acl must be an instance of AV.ACL');\n } else {\n this.setACL(acl);\n }\n }\n },\n\n /**\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @return {String} the name of the role.\n */\n getName: function() {\n return this.get('name');\n },\n\n /**\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n * <p>\n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n * </p>\n *\n * <p>This is equivalent to calling role.set(\"name\", name)</p>\n *\n * @param {String} name The name of the role.\n */\n setName: function(name, options) {\n return this.set('name', name, options);\n },\n\n /**\n * Gets the AV.Relation for the AV.Users that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"users\")</p>\n *\n * @return {AV.Relation} the relation for the users belonging to this\n * role.\n */\n getUsers: function() {\n return this.relation('users');\n },\n\n /**\n * Gets the AV.Relation for the AV.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"roles\")</p>\n *\n * @return {AV.Relation} the relation for the roles belonging to this\n * role.\n */\n getRoles: function() {\n return this.relation('roles');\n },\n\n /**\n * @ignore\n */\n validate: function(attrs, options) {\n if ('name' in attrs && attrs.name !== this.getName()) {\n var newName = attrs.name;\n if (this.id && this.id !== attrs.objectId) {\n // Check to see if the objectId being set matches this.id.\n // This happens during a fetch -- the id is set before calling fetch.\n // Let the name be set in this case.\n return new AVError(\n AVError.OTHER_CAUSE,\n \"A role's name can only be set before it has been saved.\"\n );\n }\n if (!_.isString(newName)) {\n return new AVError(\n AVError.OTHER_CAUSE,\n \"A role's name must be a String.\"\n );\n }\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new AVError(\n AVError.OTHER_CAUSE,\n \"A role's name can only contain alphanumeric characters, _,\" +\n ' -, and spaces.'\n );\n }\n }\n if (AV.Object.prototype.validate) {\n return AV.Object.prototype.validate.call(this, attrs, options);\n }\n return false;\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/role.js","const _ = require('underscore');\nconst uuid = require('uuid/v4');\nconst AVError = require('./error');\nconst { _request: AVRequest, request } = require('./request');\nconst { getAdapter } = require('./adapter');\n\nconst PLATFORM_ANONYMOUS = 'anonymous';\nconst PLATFORM_QQAPP = 'lc_qqapp';\n\nconst mergeUnionDataIntoAuthData = (defaultUnionIdPlatform = 'weixin') => (\n authData,\n unionId,\n { unionIdPlatform = defaultUnionIdPlatform, asMainAccount = false } = {}\n) => {\n if (typeof unionId !== 'string')\n throw new AVError(AVError.OTHER_CAUSE, 'unionId is not a string');\n if (typeof unionIdPlatform !== 'string')\n throw new AVError(AVError.OTHER_CAUSE, 'unionIdPlatform is not a string');\n\n return _.extend({}, authData, {\n platform: unionIdPlatform,\n unionid: unionId,\n main_account: Boolean(asMainAccount),\n });\n};\n\nmodule.exports = function(AV) {\n /**\n * @class\n *\n * <p>An AV.User object is a local representation of a user persisted to the\n * LeanCloud server. This class is a subclass of an AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * user specific methods, like authentication, signing up, and validation of\n * uniqueness.</p>\n */\n AV.User = AV.Object.extend(\n '_User',\n /** @lends AV.User.prototype */ {\n // Instance Variables\n _isCurrentUser: false,\n\n // Instance Methods\n\n /**\n * Internal method to handle special fields in a _User response.\n * @private\n */\n _mergeMagicFields: function(attrs) {\n if (attrs.sessionToken) {\n this._sessionToken = attrs.sessionToken;\n delete attrs.sessionToken;\n }\n return AV.User.__super__._mergeMagicFields.call(this, attrs);\n },\n\n /**\n * Removes null values from authData (which exist temporarily for\n * unlinking)\n * @private\n */\n _cleanupAuthData: function() {\n if (!this.isCurrent()) {\n return;\n }\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n AV._objectEach(this.get('authData'), function(value, key) {\n if (!authData[key]) {\n delete authData[key];\n }\n });\n },\n\n /**\n * Synchronizes authData for all providers.\n * @private\n */\n _synchronizeAllAuthData: function() {\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n\n var self = this;\n AV._objectEach(this.get('authData'), function(value, key) {\n self._synchronizeAuthData(key);\n });\n },\n\n /**\n * Synchronizes auth data for a provider (e.g. puts the access token in the\n * right place to be used by the Facebook SDK).\n * @private\n */\n _synchronizeAuthData: function(provider) {\n if (!this.isCurrent()) {\n return;\n }\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[authType];\n } else {\n authType = provider.getAuthType();\n }\n var authData = this.get('authData');\n if (!authData || !provider) {\n return;\n }\n var success = provider.restoreAuthentication(authData[authType]);\n if (!success) {\n this.dissociateAuthData(provider);\n }\n },\n\n _handleSaveResult: function(makeCurrent) {\n // Clean up and synchronize the authData object, removing any unset values\n if (makeCurrent && !AV._config.disableCurrentUser) {\n this._isCurrentUser = true;\n }\n this._cleanupAuthData();\n this._synchronizeAllAuthData();\n // Don't keep the password around.\n delete this._serverData.password;\n this._rebuildEstimatedDataForKey('password');\n this._refreshCache();\n if (\n (makeCurrent || this.isCurrent()) &&\n !AV._config.disableCurrentUser\n ) {\n // Some old version of leanengine-node-sdk will overwrite\n // AV.User._saveCurrentUser which returns no Promise.\n // So we need a Promise wrapper.\n return Promise.resolve(AV.User._saveCurrentUser(this));\n } else {\n return Promise.resolve();\n }\n },\n\n /**\n * Unlike in the Android/iOS SDKs, logInWith is unnecessary, since you can\n * call linkWith on the user (even if it doesn't exist yet on the server).\n * @private\n */\n _linkWith: function(provider, data, { failOnNotExist = false } = {}) {\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[provider];\n } else {\n authType = provider.getAuthType();\n }\n if (data) {\n return this.save(\n { authData: { [authType]: data } },\n {\n fetchWhenSave: !!this.get('authData'),\n _failOnNotExist: failOnNotExist,\n }\n ).then(function(model) {\n return model._handleSaveResult(true).then(function() {\n return model;\n });\n });\n } else {\n return provider\n .authenticate()\n .then(result => this._linkWith(provider, result));\n }\n },\n\n /**\n * Associate the user with a third party authData.\n * @since 3.3.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthData(authData, platform) {\n return this._linkWith(platform, authData);\n },\n\n /**\n * Associate the user with a third party authData and unionId.\n * @since 3.5.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthDataAndUnionId(\n authData,\n platform,\n unionId,\n unionOptions\n ) {\n return this._linkWith(\n platform,\n mergeUnionDataIntoAuthData()(authData, unionId, unionOptions)\n );\n },\n\n /**\n * Associate the user with the identity of the current mini-app.\n * @since 4.6.0\n * @param {Object} [authInfo]\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n * @return {Promise<AV.User>}\n */\n associateWithMiniApp(authInfo, option) {\n if (authInfo === undefined) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(authInfo =>\n this._linkWith(authInfo.provider, authInfo.authData, option)\n );\n }\n return this._linkWith(authInfo.provider, authInfo.authData, option);\n },\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的微信帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => {\n authInfo.provider = PLATFORM_QQAPP;\n return this.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => this.associateWithMiniApp(authInfo));\n },\n\n /**\n * @deprecated renamed to {@link AV.User#associateWithWeapp}\n * @return {Promise<AV.User>}\n */\n linkWithWeapp(options) {\n console.warn(\n 'DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替'\n );\n return this.associateWithWeapp(options);\n },\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的 QQ 帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQAppWithUnionId(\n unionId,\n { unionIdPlatform = 'qq', asMainAccount = false } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return this.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeappWithUnionId(\n unionId,\n { unionIdPlatform = 'weixin', asMainAccount = false } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n return this.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * Unlinks a user from a service.\n * @param {string} platform\n * @return {Promise<AV.User>}\n * @since 3.3.0\n */\n dissociateAuthData(provider) {\n this.unset(`authData.${provider}`);\n return this.save().then(model =>\n model._handleSaveResult(true).then(() => model)\n );\n },\n\n /**\n * @private\n * @deprecated\n */\n _unlinkFrom(provider) {\n console.warn(\n 'DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替'\n );\n return this.dissociateAuthData(provider);\n },\n\n /**\n * Checks whether a user is linked to a service.\n * @private\n */\n _isLinked: function(provider) {\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n } else {\n authType = provider.getAuthType();\n }\n var authData = this.get('authData') || {};\n return !!authData[authType];\n },\n\n /**\n * Checks whether a user is anonymous.\n * @since 3.9.0\n * @return {boolean}\n */\n isAnonymous() {\n return this._isLinked(PLATFORM_ANONYMOUS);\n },\n\n logOut: function() {\n this._logOutWithAll();\n this._isCurrentUser = false;\n },\n\n /**\n * Deauthenticates all providers.\n * @private\n */\n _logOutWithAll: function() {\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n var self = this;\n AV._objectEach(this.get('authData'), function(value, key) {\n self._logOutWith(key);\n });\n },\n\n /**\n * Deauthenticates a single provider (e.g. removing access tokens from the\n * Facebook SDK).\n * @private\n */\n _logOutWith: function(provider) {\n if (!this.isCurrent()) {\n return;\n }\n if (_.isString(provider)) {\n provider = AV.User._authProviders[provider];\n }\n if (provider && provider.deauthenticate) {\n provider.deauthenticate();\n }\n },\n\n /**\n * Signs up a new user. You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUp\n */\n signUp: function(attrs, options) {\n var error;\n\n var username = (attrs && attrs.username) || this.get('username');\n if (!username || username === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up user with an empty name.'\n );\n throw error;\n }\n\n var password = (attrs && attrs.password) || this.get('password');\n if (!password || password === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up user with an empty password.'\n );\n throw error;\n }\n\n return this.save(attrs, options).then(function(model) {\n if (model.isAnonymous()) {\n model.unset(`authData.${PLATFORM_ANONYMOUS}`);\n model._opSetQueue = [{}];\n }\n return model._handleSaveResult(true).then(function() {\n return model;\n });\n });\n },\n\n /**\n * Signs up a new user with mobile phone and sms code.\n * You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function(attrs, options = {}) {\n var error;\n\n var mobilePhoneNumber =\n (attrs && attrs.mobilePhoneNumber) || this.get('mobilePhoneNumber');\n if (!mobilePhoneNumber || mobilePhoneNumber === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up or login user by mobilePhoneNumber ' +\n 'with an empty mobilePhoneNumber.'\n );\n throw error;\n }\n\n var smsCode = (attrs && attrs.smsCode) || this.get('smsCode');\n if (!smsCode || smsCode === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up or login user by mobilePhoneNumber ' +\n 'with an empty smsCode.'\n );\n throw error;\n }\n\n options._makeRequest = function(route, className, id, method, json) {\n return AVRequest('usersByMobilePhone', null, null, 'POST', json);\n };\n return this.save(attrs, options).then(function(model) {\n delete model.attributes.smsCode;\n delete model._serverData.smsCode;\n return model._handleSaveResult(true).then(function() {\n return model;\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthData}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthData(authData, platform, options) {\n return this._linkWith(platform, authData, options);\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthDataAndUnionId}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthDataAndUnionId(\n authData,\n platform,\n unionId,\n unionLoginOptions\n ) {\n return this.loginWithAuthData(\n mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions),\n platform,\n unionLoginOptions\n );\n },\n\n /**\n * The same with {@link AV.User.loginWithWeapp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.7.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, { failOnNotExist })\n );\n },\n\n /**\n * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.13.0\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n return this.loginWithMiniApp(authInfo, { failOnNotExist });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => {\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, { failOnNotExist });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, { failOnNotExist });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.\n * @since 4.6.0\n */\n loginWithMiniApp(authInfo, option) {\n if (authInfo === undefined) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(authInfo =>\n this.loginWithAuthData(authInfo.authData, authInfo.provider, option)\n );\n }\n return this.loginWithAuthData(\n authInfo.authData,\n authInfo.provider,\n option\n );\n },\n\n /**\n * Logs in a AV.User. On success, this saves the session to localStorage,\n * so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling logIn.</p>\n *\n * @see AV.User.logIn\n * @return {Promise} A promise that is fulfilled with the user when\n * the login is complete.\n */\n logIn: function() {\n var model = this;\n var request = AVRequest('login', null, null, 'POST', this.toJSON());\n return request.then(function(resp) {\n var serverAttrs = model.parse(resp);\n model._finishFetch(serverAttrs);\n return model._handleSaveResult(true).then(function() {\n if (!serverAttrs.smsCode) delete model.attributes['smsCode'];\n return model;\n });\n });\n },\n /**\n * @see AV.Object#save\n */\n save: function(arg1, arg2, arg3) {\n var attrs, options;\n if (_.isObject(arg1) || _.isNull(arg1) || _.isUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n options = options || {};\n\n return AV.Object.prototype.save\n .call(this, attrs, options)\n .then(function(model) {\n return model._handleSaveResult(false).then(function() {\n return model;\n });\n });\n },\n\n /**\n * Follow a user\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as\n * conditions of followerQuery/followeeQuery.\n * @param {AuthOptions} [authOptions]\n */\n follow: function(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n let user;\n let attributes;\n if (options.user) {\n user = options.user;\n attributes = options.attributes;\n } else {\n user = options;\n }\n var userObjectId = _.isString(user) ? user : user.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(\n route,\n null,\n null,\n 'POST',\n AV._encode(attributes),\n authOptions\n );\n return request;\n },\n\n /**\n * Unfollow a user.\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to unfollow.\n * @param {AuthOptions} [authOptions]\n */\n unfollow: function(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n let user;\n if (options.user) {\n user = options.user;\n } else {\n user = options;\n }\n var userObjectId = _.isString(user) ? user : user.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'DELETE', null, authOptions);\n return request;\n },\n\n /**\n * Get the user's followers and followees.\n * @since 4.8.0\n * @param {Object} [options]\n * @param {Number} [options.skip]\n * @param {Number} [options.limit]\n * @param {AuthOptions} [authOptions]\n */\n getFollowersAndFollowees: function(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n return request({\n method: 'GET',\n path: `/users/${this.id}/followersAndFollowees`,\n query: {\n skip: options && options.skip,\n limit: options && options.limit,\n include: 'follower,followee',\n keys: 'follower,followee',\n },\n authOptions,\n }).then(({ followers, followees }) => ({\n followers: followers.map(({ follower }) => AV._decode(follower)),\n followees: followees.map(({ followee }) => AV._decode(followee)),\n }));\n },\n\n /**\n *Create a follower query to query the user's followers.\n * @since 0.3.0\n * @see AV.User#followerQuery\n */\n followerQuery: function() {\n return AV.User.followerQuery(this.id);\n },\n\n /**\n *Create a followee query to query the user's followees.\n * @since 0.3.0\n * @see AV.User#followeeQuery\n */\n followeeQuery: function() {\n return AV.User.followeeQuery(this.id);\n },\n\n /**\n * @see AV.Object#fetch\n */\n fetch: function(fetchOptions, options) {\n return AV.Object.prototype.fetch\n .call(this, fetchOptions, options)\n .then(function(model) {\n return model._handleSaveResult(false).then(function() {\n return model;\n });\n });\n },\n\n /**\n * Update user's new password safely based on old password.\n * @param {String} oldPassword the old password.\n * @param {String} newPassword the new password.\n * @param {AuthOptions} options\n */\n updatePassword: function(oldPassword, newPassword, options) {\n var route = 'users/' + this.id + '/updatePassword';\n var params = {\n old_password: oldPassword,\n new_password: newPassword,\n };\n var request = AVRequest(route, null, null, 'PUT', params, options);\n return request.then(resp => {\n this._finishFetch(this.parse(resp));\n return this._handleSaveResult(true).then(() => resp);\n });\n },\n\n /**\n * Returns true if <code>current</code> would return this user.\n * @see AV.User#current\n */\n isCurrent: function() {\n return this._isCurrentUser;\n },\n\n /**\n * Returns get(\"username\").\n * @return {String}\n * @see AV.Object#get\n */\n getUsername: function() {\n return this.get('username');\n },\n\n /**\n * Returns get(\"mobilePhoneNumber\").\n * @return {String}\n * @see AV.Object#get\n */\n getMobilePhoneNumber: function() {\n return this.get('mobilePhoneNumber');\n },\n\n /**\n * Calls set(\"mobilePhoneNumber\", phoneNumber, options) and returns the result.\n * @param {String} mobilePhoneNumber\n * @return {Boolean}\n * @see AV.Object#set\n */\n setMobilePhoneNumber: function(phone, options) {\n return this.set('mobilePhoneNumber', phone, options);\n },\n\n /**\n * Calls set(\"username\", username, options) and returns the result.\n * @param {String} username\n * @return {Boolean}\n * @see AV.Object#set\n */\n setUsername: function(username, options) {\n return this.set('username', username, options);\n },\n\n /**\n * Calls set(\"password\", password, options) and returns the result.\n * @param {String} password\n * @return {Boolean}\n * @see AV.Object#set\n */\n setPassword: function(password, options) {\n return this.set('password', password, options);\n },\n\n /**\n * Returns get(\"email\").\n * @return {String}\n * @see AV.Object#get\n */\n getEmail: function() {\n return this.get('email');\n },\n\n /**\n * Calls set(\"email\", email, options) and returns the result.\n * @param {String} email\n * @param {AuthOptions} options\n * @return {Boolean}\n * @see AV.Object#set\n */\n setEmail: function(email, options) {\n return this.set('email', email, options);\n },\n\n /**\n * Checks whether this user is the current user and has been authenticated.\n * @deprecated 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),\n * 如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id\n * @return (Boolean) whether this user is the current user and is logged in.\n */\n authenticated: function() {\n console.warn(\n 'DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。'\n );\n return (\n !!this._sessionToken &&\n (!AV._config.disableCurrentUser &&\n AV.User.current() &&\n AV.User.current().id === this.id)\n );\n },\n\n /**\n * Detects if current sessionToken is valid.\n *\n * @since 2.0.0\n * @return Promise.<Boolean>\n */\n isAuthenticated() {\n return Promise.resolve().then(\n () =>\n !!this._sessionToken &&\n AV.User._fetchUserBySessionToken(this._sessionToken).then(\n () => true,\n error => {\n if (error.code === 211) {\n return false;\n }\n throw error;\n }\n )\n );\n },\n\n /**\n * Get sessionToken of current user.\n * @return {String} sessionToken\n */\n getSessionToken() {\n return this._sessionToken;\n },\n\n /**\n * Refresh sessionToken of current user.\n * @since 2.1.0\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.User>} user with refreshed sessionToken\n */\n refreshSessionToken(options) {\n return AVRequest(\n `users/${this.id}/refreshSessionToken`,\n null,\n null,\n 'PUT',\n null,\n options\n ).then(response => {\n this._finishFetch(response);\n return this._handleSaveResult(true).then(() => this);\n });\n },\n\n /**\n * Get this user's Roles.\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.Role[]>} A promise that is fulfilled with the roles when\n * the query is complete.\n */\n getRoles(options) {\n return AV.Relation.reverseQuery('_Role', 'users', this).find(options);\n },\n },\n /** @lends AV.User */ {\n // Class Variables\n\n // The currently logged-in user.\n _currentUser: null,\n\n // Whether currentUser is known to match the serialized version on disk.\n // This is useful for saving a localstorage check if you try to load\n // _currentUser frequently while there is none stored.\n _currentUserMatchesDisk: false,\n\n // The localStorage key suffix that the current user is stored under.\n _CURRENT_USER_KEY: 'currentUser',\n\n // The mapping of auth provider names to actual providers\n _authProviders: {},\n\n // Class Methods\n\n /**\n * Signs up a new user with a username (or email) and password.\n * This will create a new AV.User on the server, and also persist the\n * session in localStorage so that you can access the user using\n * {@link #current}.\n *\n * @param {String} username The username (or email) to sign up with.\n * @param {String} password The password to sign up with.\n * @param {Object} [attrs] Extra fields to set on the new user.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that is fulfilled with the user when\n * the signup completes.\n * @see AV.User#signUp\n */\n signUp: function(username, password, attrs, options) {\n attrs = attrs || {};\n attrs.username = username;\n attrs.password = password;\n var user = AV.Object._create('_User');\n return user.signUp(attrs, options);\n },\n\n /**\n * Logs in a user with a username (or email) and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} username The username (or email) to log in with.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logIn: function(username, password) {\n var user = AV.Object._create('_User');\n user._finishFetch({ username: username, password: password });\n return user.logIn();\n },\n\n /**\n * Logs in a user with a session token. On success, this saves the session\n * to disk, so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * @param {String} sessionToken The sessionToken to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n become: function(sessionToken) {\n return this._fetchUserBySessionToken(sessionToken).then(user =>\n user._handleSaveResult(true).then(() => user)\n );\n },\n\n _fetchUserBySessionToken: function(sessionToken) {\n if (sessionToken === undefined) {\n return Promise.reject(\n new Error('The sessionToken cannot be undefined')\n );\n }\n\n var user = AV.Object._create('_User');\n return request({\n method: 'GET',\n path: '/users/me',\n authOptions: {\n sessionToken,\n },\n }).then(function(resp) {\n var serverAttrs = user.parse(resp);\n user._finishFetch(serverAttrs);\n return user;\n });\n },\n\n /**\n * Logs in a user with a mobile phone number and sms code sent by\n * AV.User.requestLoginSmsCode.On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} smsCode The sms code sent by AV.User.requestLoginSmsCode\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhoneSmsCode: function(mobilePhone, smsCode) {\n var user = AV.Object._create('_User');\n user._finishFetch({ mobilePhoneNumber: mobilePhone, smsCode: smsCode });\n return user.logIn();\n },\n\n /**\n * Signs up or logs in a user with a mobilePhoneNumber and smsCode.\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @param {String} mobilePhoneNumber The user's mobilePhoneNumber.\n * @param {String} smsCode The sms code sent by AV.Cloud.requestSmsCode\n * @param {Object} attributes The user's other attributes such as username etc.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function(\n mobilePhoneNumber,\n smsCode,\n attrs,\n options\n ) {\n attrs = attrs || {};\n attrs.mobilePhoneNumber = mobilePhoneNumber;\n attrs.smsCode = smsCode;\n var user = AV.Object._create('_User');\n return user.signUpOrlogInWithMobilePhone(attrs, options);\n },\n\n /**\n * Logs in a user with a mobile phone number and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhone: function(mobilePhone, password) {\n var user = AV.Object._create('_User');\n user._finishFetch({\n mobilePhoneNumber: mobilePhone,\n password: password,\n });\n return user.logIn();\n },\n\n /**\n * Logs in a user with email and password.\n *\n * @since 3.13.0\n * @param {String} email The user's email.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n loginWithEmail(email, password) {\n const user = AV.Object._create('_User');\n user._finishFetch({\n email,\n password,\n });\n return user.logIn();\n },\n\n /**\n * Signs up or logs in a user with a third party auth data(AccessToken).\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @example AV.User.loginWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n * @see {@link https://leancloud.cn/docs/js_guide.html#绑定第三方平台账户}\n */\n loginWithAuthData(authData, platform, options) {\n return AV.User._logInWith(platform, authData, options);\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthData}\n */\n signUpOrlogInWithAuthData(...param) {\n console.warn(\n 'DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替'\n );\n return this.loginWithAuthData(...param);\n },\n\n /**\n * Signs up or logs in a user with a third party authData and unionId.\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example AV.User.loginWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n loginWithAuthDataAndUnionId(\n authData,\n platform,\n unionId,\n unionLoginOptions\n ) {\n return this.loginWithAuthData(\n mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions),\n platform,\n unionLoginOptions\n );\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthDataAndUnionId}\n * @since 3.5.0\n */\n signUpOrlogInWithAuthDataAndUnionId(...param) {\n console.warn(\n 'DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替'\n );\n return this.loginWithAuthDataAndUnionId(...param);\n },\n\n /**\n * Merge unionId into authInfo.\n * @since 4.6.0\n * @param {Object} authInfo\n * @param {String} unionId\n * @param {Object} [unionIdOption]\n * @param {Boolean} [unionIdOption.asMainAccount] If true, the unionId will be associated with the user.\n */\n mergeUnionId(authInfo, unionId, { asMainAccount = false } = {}) {\n authInfo = JSON.parse(JSON.stringify(authInfo));\n const { authData, platform } = authInfo;\n authData.platform = platform;\n authData.main_account = asMainAccount;\n authData.unionid = unionId;\n return authInfo;\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 2.0.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, { failOnNotExist })\n );\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 3.13.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.<AV.User>}\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n return this.loginWithMiniApp(authInfo, { failOnNotExist });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => {\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, { failOnNotExist });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise.<AV.User>}\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, { failOnNotExist });\n });\n },\n\n /**\n * Register or login using the identity of the current mini-app.\n * @param {Object} authInfo\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n */\n loginWithMiniApp(authInfo, option) {\n if (authInfo === undefined) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(authInfo =>\n this.loginWithAuthData(authInfo.authData, authInfo.provider, option)\n );\n }\n return this.loginWithAuthData(\n authInfo.authData,\n authInfo.provider,\n option\n );\n },\n\n /**\n * Only use for DI in tests to produce deterministic IDs.\n */\n _genId() {\n return uuid();\n },\n\n /**\n * Creates an anonymous user.\n *\n * @since 3.9.0\n * @return {Promise.<AV.User>}\n */\n loginAnonymously() {\n return this.loginWithAuthData(\n {\n id: AV.User._genId(),\n },\n 'anonymous'\n );\n },\n\n associateWithAuthData(userObj, platform, authData) {\n console.warn(\n 'DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替'\n );\n return userObj._linkWith(platform, authData);\n },\n /**\n * Logs out the currently logged in user session. This will remove the\n * session from disk, log out of linked services, and future calls to\n * <code>current</code> will return <code>null</code>.\n * @return {Promise}\n */\n logOut: function() {\n if (AV._config.disableCurrentUser) {\n console.warn(\n 'AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'\n );\n return Promise.resolve(null);\n }\n\n if (AV.User._currentUser !== null) {\n AV.User._currentUser._logOutWithAll();\n AV.User._currentUser._isCurrentUser = false;\n }\n AV.User._currentUserMatchesDisk = true;\n AV.User._currentUser = null;\n return AV.localStorage\n .removeItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY))\n .then(() => AV._refreshSubscriptionId());\n },\n\n /**\n *Create a follower query for special user to query the user's followers.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followerQuery: function(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n var query = new AV.FriendShipQuery('_Follower');\n query._friendshipTag = 'follower';\n query.equalTo(\n 'user',\n AV.Object.createWithoutData('_User', userObjectId)\n );\n return query;\n },\n\n /**\n *Create a followee query for special user to query the user's followees.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followeeQuery: function(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n var query = new AV.FriendShipQuery('_Followee');\n query._friendshipTag = 'followee';\n query.equalTo(\n 'user',\n AV.Object.createWithoutData('_User', userObjectId)\n );\n return query;\n },\n\n /**\n * Requests a password reset email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * reset their password on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * forgot their password.\n * @return {Promise}\n */\n requestPasswordReset: function(email) {\n var json = { email: email };\n var request = AVRequest(\n 'requestPasswordReset',\n null,\n null,\n 'POST',\n json\n );\n return request;\n },\n\n /**\n * Requests a verify email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * verify their email address on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * doesn't verify their email address.\n * @return {Promise}\n */\n requestEmailVerify: function(email) {\n var json = { email: email };\n var request = AVRequest('requestEmailVerify', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * verify their mobile phone number by calling AV.User.verifyMobilePhone\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestMobilePhoneVerify: function(mobilePhoneNumber, options = {}) {\n const data = {\n mobilePhoneNumber,\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest(\n 'requestMobilePhoneVerify',\n null,\n null,\n 'POST',\n data,\n options\n );\n return request;\n },\n\n /**\n * Requests a reset password sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * reset their account's password by calling AV.User.resetPasswordBySmsCode\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestPasswordResetBySmsCode: function(mobilePhoneNumber, options = {}) {\n const data = {\n mobilePhoneNumber,\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest(\n 'requestPasswordResetBySmsCode',\n null,\n null,\n 'POST',\n data,\n options\n );\n return request;\n },\n\n /**\n * Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber.\n * This sms code allows current user to reset it's mobilePhoneNumber by\n * calling {@link AV.User.changePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {Number} [ttl] ttl of sms code (default is 6 minutes)\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestChangePhoneNumber(mobilePhoneNumber, ttl, options) {\n const data = { mobilePhoneNumber };\n if (ttl) {\n data.ttl = options.ttl;\n }\n if (options && options.validateToken) {\n data.validate_token = options.validateToken;\n }\n return AVRequest(\n 'requestChangePhoneNumber',\n null,\n null,\n 'POST',\n data,\n options\n );\n },\n\n /**\n * Makes a call to reset user's account mobilePhoneNumber by sms code.\n * The sms code is sent by {@link AV.User.requestChangePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {String} code The sms code.\n * @return {Promise}\n */\n changePhoneNumber(mobilePhoneNumber, code) {\n const data = { mobilePhoneNumber, code };\n return AVRequest('changePhoneNumber', null, null, 'POST', data);\n },\n\n /**\n * Makes a call to reset user's account password by sms code and new password.\n * The sms code is sent by AV.User.requestPasswordResetBySmsCode.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @param {String} password The new password.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n resetPasswordBySmsCode: function(code, password) {\n var json = { password: password };\n var request = AVRequest(\n 'resetPasswordBySmsCode',\n null,\n code,\n 'PUT',\n json\n );\n return request;\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode\n * If verify successfully,the user mobilePhoneVerified attribute will be true.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifyMobilePhone: function(code) {\n var request = AVRequest('verifyMobilePhone', null, code, 'POST', null);\n return request;\n },\n\n /**\n * Requests a logIn sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * login by AV.User.logInWithMobilePhoneSmsCode function.\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that want to login by AV.User.logInWithMobilePhoneSmsCode\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestLoginSmsCode: function(mobilePhoneNumber, options = {}) {\n const data = {\n mobilePhoneNumber,\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest(\n 'requestLoginSmsCode',\n null,\n null,\n 'POST',\n data,\n options\n );\n return request;\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {Promise.<AV.User>} resolved with the currently logged in AV.User.\n */\n currentAsync: function() {\n if (AV._config.disableCurrentUser) {\n console.warn(\n 'AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'\n );\n return Promise.resolve(null);\n }\n\n if (AV.User._currentUser) {\n return Promise.resolve(AV.User._currentUser);\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return Promise.resolve(AV.User._currentUser);\n }\n\n return AV.localStorage\n .getItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY))\n .then(function(userData) {\n if (!userData) {\n return null;\n }\n\n // Load the user from local storage.\n AV.User._currentUserMatchesDisk = true;\n\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n AV.User._currentUser._finishFetch(json);\n //AV.User._currentUser.set(json);\n\n AV.User._currentUser._synchronizeAllAuthData();\n AV.User._currentUser._refreshCache();\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n });\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {AV.User} The currently logged in AV.User.\n */\n current: function() {\n if (AV._config.disableCurrentUser) {\n console.warn(\n 'AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'\n );\n return null;\n }\n\n if (AV.localStorage.async) {\n const error = new Error(\n 'Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.'\n );\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n }\n\n if (AV.User._currentUser) {\n return AV.User._currentUser;\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return AV.User._currentUser;\n }\n\n // Load the user from local storage.\n AV.User._currentUserMatchesDisk = true;\n\n var userData = AV.localStorage.getItem(\n AV._getAVPath(AV.User._CURRENT_USER_KEY)\n );\n if (!userData) {\n return null;\n }\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n AV.User._currentUser._finishFetch(json);\n //AV.User._currentUser.set(json);\n\n AV.User._currentUser._synchronizeAllAuthData();\n AV.User._currentUser._refreshCache();\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n },\n\n /**\n * Persists a user as currentUser to localStorage, and into the singleton.\n * @private\n */\n _saveCurrentUser: function(user) {\n var promise;\n if (AV.User._currentUser !== user) {\n promise = AV.User.logOut();\n } else {\n promise = Promise.resolve();\n }\n return promise.then(function() {\n user._isCurrentUser = true;\n AV.User._currentUser = user;\n\n var json = user._toFullJSON();\n json._id = user.id;\n json._sessionToken = user._sessionToken;\n return AV.localStorage\n .setItemAsync(\n AV._getAVPath(AV.User._CURRENT_USER_KEY),\n JSON.stringify(json)\n )\n .then(function() {\n AV.User._currentUserMatchesDisk = true;\n return AV._refreshSubscriptionId();\n });\n });\n },\n\n _registerAuthenticationProvider: function(provider) {\n AV.User._authProviders[provider.getAuthType()] = provider;\n // Synchronize the current user with the auth provider.\n if (!AV._config.disableCurrentUser && AV.User.current()) {\n AV.User.current()._synchronizeAuthData(provider.getAuthType());\n }\n },\n\n _logInWith: function(provider, authData, options) {\n var user = AV.Object._create('_User');\n return user._linkWith(provider, authData, options);\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/user.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/defineProperty.js\n// module id = 323\n// module chunks = 0 1","const _ = require('underscore');\nconst debug = require('debug')('leancloud:query');\nconst AVError = require('./error');\nconst { _request, request } = require('./request');\nconst {\n ensureArray,\n transformFetchOptions,\n continueWhile,\n} = require('./utils');\n\nconst requires = (value, message) => {\n if (value === undefined) {\n throw new Error(message);\n }\n};\n\n// AV.Query is a way to create a list of AV.Objects.\nmodule.exports = function(AV) {\n /**\n * Creates a new AV.Query for the given AV.Object subclass.\n * @param {Class|String} objectClass An instance of a subclass of AV.Object, or a AV className string.\n * @class\n *\n * <p>AV.Query defines a query that is used to fetch AV.Objects. The\n * most common use case is finding all objects that match a query through the\n * <code>find</code> method. For example, this sample code fetches all objects\n * of class <code>MyClass</code>. It calls a different function depending on\n * whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.find().then(function(results) {\n * // results is an array of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to retrieve a single object whose id is\n * known, through the get method. For example, this sample code fetches an\n * object of class <code>MyClass</code> and id <code>myId</code>. It calls a\n * different function depending on whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.get(myId).then(function(object) {\n * // object is an instance of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to count the number of objects that match\n * the query without retrieving all of those objects. For example, this\n * sample code counts the number of objects of the class <code>MyClass</code>\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.count().then(function(number) {\n * // There are number instances of MyClass.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n */\n AV.Query = function(objectClass) {\n if (_.isString(objectClass)) {\n objectClass = AV.Object._getSubclass(objectClass);\n }\n\n this.objectClass = objectClass;\n\n this.className = objectClass.prototype.className;\n\n this._where = {};\n this._include = [];\n this._select = [];\n this._limit = -1; // negative limit means, do not send a limit\n this._skip = 0;\n this._defaultParams = {};\n };\n\n /**\n * Constructs a AV.Query that is the OR of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.or(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an or of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to OR.\n * @return {AV.Query} The query that is the OR of the passed in queries.\n */\n AV.Query.or = function() {\n var queries = _.toArray(arguments);\n var className = null;\n AV._arrayEach(queries, function(q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n var query = new AV.Query(className);\n query._orQuery(queries);\n return query;\n };\n\n /**\n * Constructs a AV.Query that is the AND of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.and(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an 'and' of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to AND.\n * @return {AV.Query} The query that is the AND of the passed in queries.\n */\n AV.Query.and = function() {\n var queries = _.toArray(arguments);\n var className = null;\n AV._arrayEach(queries, function(q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n var query = new AV.Query(className);\n query._andQuery(queries);\n return query;\n };\n\n /**\n * Retrieves a list of AVObjects that satisfy the CQL.\n * CQL syntax please see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n *\n * @param {String} cql A CQL string, see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n * @param {Array} pvalues An array contains placeholder values.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n AV.Query.doCloudQuery = function(cql, pvalues, options) {\n var params = { cql: cql };\n if (_.isArray(pvalues)) {\n params.pvalues = pvalues;\n } else {\n options = pvalues;\n }\n\n var request = _request('cloudQuery', null, null, 'GET', params, options);\n return request.then(function(response) {\n //query to process results.\n var query = new AV.Query(response.className);\n var results = _.map(response.results, function(json) {\n var obj = query._newObject(response);\n if (obj._finishFetch) {\n obj._finishFetch(query._processResult(json), true);\n }\n return obj;\n });\n return {\n results: results,\n count: response.count,\n className: response.className,\n };\n });\n };\n\n /**\n * Return a query with conditions from json.\n * This can be useful to send a query from server side to client side.\n * @since 4.0.0\n * @param {Object} json from {@link AV.Query#toJSON}\n * @return {AV.Query}\n */\n AV.Query.fromJSON = ({\n className,\n where,\n include,\n select,\n includeACL,\n limit,\n skip,\n order,\n }) => {\n if (typeof className !== 'string') {\n throw new TypeError('Invalid Query JSON, className must be a String.');\n }\n const query = new AV.Query(className);\n _.extend(query, {\n _where: where,\n _include: include,\n _select: select,\n _includeACL: includeACL,\n _limit: limit,\n _skip: skip,\n _order: order,\n });\n return query;\n };\n\n AV.Query._extend = AV._extend;\n\n _.extend(\n AV.Query.prototype,\n /** @lends AV.Query.prototype */ {\n //hook to iterate result. Added by dennis<xzhuang@avoscloud.com>.\n _processResult: function(obj) {\n return obj;\n },\n\n /**\n * Constructs an AV.Object whose id is already known by fetching data from\n * the server.\n *\n * @param {String} objectId The id of the object to be fetched.\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object>}\n */\n get: function(objectId, options) {\n if (!_.isString(objectId)) {\n throw new Error('objectId must be a string');\n }\n if (objectId === '') {\n return Promise.reject(\n new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.')\n );\n }\n\n var obj = this._newObject();\n obj.id = objectId;\n\n var queryJSON = this._getParams();\n var fetchOptions = {};\n\n if (queryJSON.keys) fetchOptions.keys = queryJSON.keys;\n if (queryJSON.include) fetchOptions.include = queryJSON.include;\n if (queryJSON.includeACL)\n fetchOptions.includeACL = queryJSON.includeACL;\n\n return _request(\n 'classes',\n this.className,\n objectId,\n 'GET',\n transformFetchOptions(fetchOptions),\n options\n ).then(response => {\n if (_.isEmpty(response))\n throw new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n obj._finishFetch(obj.parse(response), true);\n return obj;\n });\n },\n\n /**\n * Returns a JSON representation of this query.\n * @return {Object}\n */\n toJSON() {\n const {\n className,\n _where: where,\n _include: include,\n _select: select,\n _includeACL: includeACL,\n _limit: limit,\n _skip: skip,\n _order: order,\n } = this;\n return {\n className,\n where,\n include,\n select,\n includeACL,\n limit,\n skip,\n order,\n };\n },\n\n _getParams: function() {\n var params = _.extend({}, this._defaultParams, {\n where: this._where,\n });\n\n if (this._include.length > 0) {\n params.include = this._include.join(',');\n }\n if (this._select.length > 0) {\n params.keys = this._select.join(',');\n }\n if (this._includeACL !== undefined) {\n params.returnACL = this._includeACL;\n }\n if (this._limit >= 0) {\n params.limit = this._limit;\n }\n if (this._skip > 0) {\n params.skip = this._skip;\n }\n if (this._order !== undefined) {\n params.order = this._order;\n }\n\n return params;\n },\n\n _newObject: function(response) {\n var obj;\n if (response && response.className) {\n obj = new AV.Object(response.className);\n } else {\n obj = new this.objectClass();\n }\n return obj;\n },\n _createRequest(\n params = this._getParams(),\n options,\n path = `/classes/${this.className}`\n ) {\n if (encodeURIComponent(JSON.stringify(params)).length > 2000) {\n const body = {\n requests: [\n {\n method: 'GET',\n path: `/1.1${path}`,\n params,\n },\n ],\n };\n return request({\n path: '/batch',\n method: 'POST',\n data: body,\n authOptions: options,\n }).then(response => {\n const result = response[0];\n if (result.success) {\n return result.success;\n }\n const error = new Error(\n result.error.error || 'Unknown batch error'\n );\n error.code = result.error.code;\n throw error;\n });\n }\n return request({\n method: 'GET',\n path,\n query: params,\n authOptions: options,\n });\n },\n\n _parseResponse(response) {\n return _.map(response.results, json => {\n var obj = this._newObject(response);\n if (obj._finishFetch) {\n obj._finishFetch(this._processResult(json), true);\n }\n return obj;\n });\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find(options) {\n const request = this._createRequest(undefined, options);\n return request.then(this._parseResponse.bind(this));\n },\n\n /**\n * Retrieves both AVObjects and total count.\n *\n * @since 4.12.0\n * @param {AuthOptions} options\n * @return {Promise} A tuple contains results and count.\n */\n findAndCount(options) {\n const params = this._getParams();\n params.count = 1;\n const request = this._createRequest(params, options);\n\n return request.then(response => [\n this._parseResponse(response),\n response.count,\n ]);\n },\n\n /**\n * scan a Query. masterKey required.\n *\n * @since 2.1.0\n * @param {object} [options]\n * @param {string} [options.orderedBy] specify the key to sort\n * @param {number} [options.batchSize] specify the batch size for each request\n * @param {AuthOptions} [authOptions]\n * @return {AsyncIterator.<AV.Object>}\n * @example const testIterator = {\n * [Symbol.asyncIterator]() {\n * return new Query('Test').scan(undefined, { useMasterKey: true });\n * },\n * };\n * for await (const test of testIterator) {\n * console.log(test.id);\n * }\n */\n scan({ orderedBy, batchSize } = {}, authOptions) {\n const condition = this._getParams();\n debug('scan %O', condition);\n if (condition.order) {\n console.warn(\n 'The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan.'\n );\n delete condition.order;\n }\n if (condition.skip) {\n console.warn(\n 'The skip option of the query is ignored for Query#scan.'\n );\n delete condition.skip;\n }\n if (condition.limit) {\n console.warn(\n 'The limit option of the query is ignored for Query#scan.'\n );\n delete condition.limit;\n }\n if (orderedBy) condition.scan_key = orderedBy;\n if (batchSize) condition.limit = batchSize;\n let promise = Promise.resolve([]);\n let cursor;\n let endReached = false;\n return {\n next: () => {\n promise = promise.then(remainResults => {\n if (endReached) return [];\n if (remainResults.length > 1) return remainResults;\n // no cursor means we have reached the end\n // except for the first time\n if (!cursor && remainResults.length !== 0) {\n endReached = true;\n return remainResults;\n }\n // when only 1 item left in queue\n // start the next request to see if it is the last one\n return _request(\n 'scan/classes',\n this.className,\n null,\n 'GET',\n cursor ? _.extend({}, condition, { cursor }) : condition,\n authOptions\n )\n .then(response => {\n cursor = response.cursor;\n return this._parseResponse(response);\n })\n .then(results => {\n if (!results.length) endReached = true;\n return remainResults.concat(results);\n });\n });\n return promise\n .then(remainResults => remainResults.shift())\n .then(result => ({\n value: result,\n done: result === undefined,\n }));\n },\n };\n },\n\n /**\n * Delete objects retrieved by this query.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n destroyAll: function(options) {\n var self = this;\n return self.find(options).then(function(objects) {\n return AV.Object.destroyAll(objects, options);\n });\n },\n\n /**\n * Counts the number of objects that match this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the count when\n * the query completes.\n */\n count: function(options) {\n var params = this._getParams();\n params.limit = 0;\n params.count = 1;\n var request = this._createRequest(params, options);\n\n return request.then(function(response) {\n return response.count;\n });\n },\n\n /**\n * Retrieves at most one AV.Object that satisfies this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the object when\n * the query completes.\n */\n first: function(options) {\n var self = this;\n\n var params = this._getParams();\n params.limit = 1;\n var request = this._createRequest(params, options);\n\n return request.then(function(response) {\n return _.map(response.results, function(json) {\n var obj = self._newObject();\n if (obj._finishFetch) {\n obj._finishFetch(self._processResult(json), true);\n }\n return obj;\n })[0];\n });\n },\n\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function(n) {\n requires(n, 'undefined is not a valid skip value');\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function(n) {\n requires(n, 'undefined is not a valid limit value');\n this._limit = n;\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that the AV.Object must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n equalTo: function(key, value) {\n requires(key, 'undefined is not a valid key');\n requires(value, 'undefined is not a valid value');\n this._where[key] = AV._encode(value);\n return this;\n },\n\n /**\n * Helper for condition queries\n * @private\n */\n _addCondition: function(key, condition, value) {\n requires(key, 'undefined is not a valid condition key');\n requires(condition, 'undefined is not a valid condition');\n requires(value, 'undefined is not a valid condition value');\n\n // Check if we already have a condition\n if (!this._where[key]) {\n this._where[key] = {};\n }\n this._where[key][condition] = AV._encode(value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular\n * <strong>array</strong> key's length to be equal to the provided value.\n * @param {String} key The array key to check.\n * @param value The length value.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n sizeEqualTo: function(key, value) {\n this._addCondition(key, '$size', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be not equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that must not be equalled.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notEqualTo: function(key, value) {\n this._addCondition(key, '$ne', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThan: function(key, value) {\n this._addCondition(key, '$lt', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThan: function(key, value) {\n this._addCondition(key, '$gt', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThanOrEqualTo: function(key, value) {\n this._addCondition(key, '$lte', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThanOrEqualTo: function(key, value) {\n this._addCondition(key, '$gte', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containedIn: function(key, values) {\n this._addCondition(key, '$in', values);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notContainedIn: function(key, values) {\n this._addCondition(key, '$nin', values);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n * @param {String} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containsAll: function(key, values) {\n this._addCondition(key, '$all', values);\n return this;\n },\n\n /**\n * Add a constraint for finding objects that contain the given key.\n * @param {String} key The key that should exist.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n exists: function(key) {\n this._addCondition(key, '$exists', true);\n return this;\n },\n\n /**\n * Add a constraint for finding objects that do not contain a given key.\n * @param {String} key The key that should not exist\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotExist: function(key) {\n this._addCondition(key, '$exists', false);\n return this;\n },\n\n /**\n * Add a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matches: function(key, regex, modifiers) {\n this._addCondition(key, '$regex', regex);\n if (!modifiers) {\n modifiers = '';\n }\n // Javascript regex options support mig as inline options but store them\n // as properties of the object. We support mi & should migrate them to\n // modifiers\n if (regex.ignoreCase) {\n modifiers += 'i';\n }\n if (regex.multiline) {\n modifiers += 'm';\n }\n\n if (modifiers && modifiers.length) {\n this._addCondition(key, '$options', modifiers);\n }\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a AV.Query\n * constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesQuery: function(key, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$inQuery', queryJSON);\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not matches a\n * AV.Query constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchQuery: function(key, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$notInQuery', queryJSON);\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * matched.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesKeyInQuery: function(key, queryKey, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$select', { key: queryKey, query: queryJSON });\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not match a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * excluded.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchKeyInQuery: function(key, queryKey, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$dontSelect', {\n key: queryKey,\n query: queryJSON,\n });\n return this;\n },\n\n /**\n * Add constraint that at least one of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _orQuery: function(queries) {\n var queryJSON = _.map(queries, function(q) {\n return q._getParams().where;\n });\n\n this._where.$or = queryJSON;\n return this;\n },\n\n /**\n * Add constraint that both of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _andQuery: function(queries) {\n var queryJSON = _.map(queries, function(q) {\n return q._getParams().where;\n });\n\n this._where.$and = queryJSON;\n return this;\n },\n\n /**\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape \\E's in\n * the text separately.\n * @private\n */\n _quote: function(s) {\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E';\n },\n\n /**\n * Add a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} substring The substring that the value must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n contains: function(key, value) {\n this._addCondition(key, '$regex', this._quote(value));\n return this;\n },\n\n /**\n * Add a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} prefix The substring that the value must start with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n startsWith: function(key, value) {\n this._addCondition(key, '$regex', '^' + this._quote(value));\n return this;\n },\n\n /**\n * Add a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} suffix The substring that the value must end with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n endsWith: function(key, value) {\n this._addCondition(key, '$regex', this._quote(value) + '$');\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n ascending: function(key) {\n requires(key, 'undefined is not a valid key');\n this._order = key;\n return this;\n },\n\n /**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addAscending: function(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',' + key;\n else this._order = key;\n return this;\n },\n\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n descending: function(key) {\n requires(key, 'undefined is not a valid key');\n this._order = '-' + key;\n return this;\n },\n\n /**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addDescending: function(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',-' + key;\n else this._order = '-' + key;\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n near: function(key, point) {\n if (!(point instanceof AV.GeoPoint)) {\n // Try to cast it to a GeoPoint, so that near(\"loc\", [20,30]) works.\n point = new AV.GeoPoint(point);\n }\n this._addCondition(key, '$nearSphere', point);\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param maxDistance Maximum distance (in radians) of results to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinRadians: function(key, point, distance) {\n this.near(key, point);\n this._addCondition(key, '$maxDistance', distance);\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 3958.8 miles.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in miles) of results to\n * return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinMiles: function(key, point, distance) {\n return this.withinRadians(key, point, distance / 3958.8);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 6371.0 kilometers.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in kilometers) of results\n * to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinKilometers: function(key, point, distance) {\n return this.withinRadians(key, point, distance / 6371.0);\n },\n\n /**\n * Add a constraint to the query that requires a particular key's\n * coordinates be contained within a given rectangular geographic bounding\n * box.\n * @param {String} key The key to be constrained.\n * @param {AV.GeoPoint} southwest\n * The lower-left inclusive corner of the box.\n * @param {AV.GeoPoint} northeast\n * The upper-right inclusive corner of the box.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinGeoBox: function(key, southwest, northeast) {\n if (!(southwest instanceof AV.GeoPoint)) {\n southwest = new AV.GeoPoint(southwest);\n }\n if (!(northeast instanceof AV.GeoPoint)) {\n northeast = new AV.GeoPoint(northeast);\n }\n this._addCondition(key, '$within', { $box: [southwest, northeast] });\n return this;\n },\n\n /**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @param {String[]} keys The name of the key to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n include: function(keys) {\n requires(keys, 'undefined is not a valid key');\n _.forEach(arguments, keys => {\n this._include = this._include.concat(ensureArray(keys));\n });\n return this;\n },\n\n /**\n * Include the ACL.\n * @param {Boolean} [value=true] Whether to include the ACL\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n includeACL: function(value = true) {\n this._includeACL = value;\n return this;\n },\n\n /**\n * Restrict the fields of the returned AV.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n * @param {String[]} keys The names of the keys to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n select: function(keys) {\n requires(keys, 'undefined is not a valid key');\n _.forEach(arguments, keys => {\n this._select = this._select.concat(ensureArray(keys));\n });\n return this;\n },\n\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n * @param callback {Function} Callback that will be called with each result\n * of the query.\n * @return {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n each: function(callback, options = {}) {\n if (this._order || this._skip || this._limit >= 0) {\n var error = new Error(\n 'Cannot iterate on a query with sort, skip, or limit.'\n );\n return Promise.reject(error);\n }\n\n var query = new AV.Query(this.objectClass);\n // We can override the batch size from the options.\n // This is undocumented, but useful for testing.\n query._limit = options.batchSize || 100;\n query._where = _.clone(this._where);\n query._include = _.clone(this._include);\n\n query.ascending('objectId');\n\n var finished = false;\n return continueWhile(\n function() {\n return !finished;\n },\n function() {\n return query.find(options).then(function(results) {\n var callbacksDone = Promise.resolve();\n _.each(results, function(result) {\n callbacksDone = callbacksDone.then(function() {\n return callback(result);\n });\n });\n\n return callbacksDone.then(function() {\n if (results.length >= query._limit) {\n query.greaterThan('objectId', results[results.length - 1].id);\n } else {\n finished = true;\n }\n });\n });\n }\n );\n },\n\n /**\n * Subscribe the changes of this query.\n *\n * LiveQuery is not included in the default bundle: {@link https://url.leanapp.cn/enable-live-query}.\n *\n * @since 3.0.0\n * @return {AV.LiveQuery} An eventemitter which can be used to get LiveQuery updates;\n */\n subscribe(options) {\n return AV.LiveQuery.init(this, options);\n },\n }\n );\n\n AV.FriendShipQuery = AV.Query._extend({\n _newObject: function() {\n const UserClass = AV.Object._getSubclass('_User');\n return new UserClass();\n },\n _processResult: function(json) {\n if (json && json[this._friendshipTag]) {\n var user = json[this._friendshipTag];\n if (user.__type === 'Pointer' && user.className === '_User') {\n delete user.__type;\n delete user.className;\n }\n return user;\n } else {\n return null;\n }\n },\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/query.js","const _ = require('underscore');\nconst EventEmitter = require('eventemitter3');\nconst { inherits } = require('./utils');\nconst { request } = require('./request');\n\nconst subscribe = (queryJSON, subscriptionId) =>\n request({\n method: 'POST',\n path: '/LiveQuery/subscribe',\n data: {\n query: queryJSON,\n id: subscriptionId,\n },\n });\n\nmodule.exports = AV => {\n const requireRealtime = () => {\n if (!AV._config.realtime) {\n throw new Error(\n 'LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query'\n );\n }\n };\n /**\n * @class\n * A LiveQuery, created by {@link AV.Query#subscribe} is an EventEmitter notifies changes of the Query.\n * @since 3.0.0\n */\n AV.LiveQuery = inherits(\n EventEmitter,\n /** @lends AV.LiveQuery.prototype */ {\n constructor(id, client, queryJSON, subscriptionId) {\n EventEmitter.apply(this);\n this.id = id;\n this._client = client;\n this._client.register(this);\n this._queryJSON = queryJSON;\n this._subscriptionId = subscriptionId;\n this._onMessage = this._dispatch.bind(this);\n this._onReconnect = () => {\n subscribe(this._queryJSON, this._subscriptionId).catch(error =>\n console.error(`LiveQuery resubscribe error: ${error.message}`)\n );\n };\n client.on('message', this._onMessage);\n client.on('reconnect', this._onReconnect);\n },\n _dispatch(message) {\n message.forEach(({ op, object, query_id: queryId, updatedKeys }) => {\n if (queryId !== this.id) return;\n const target = AV.parseJSON(\n _.extend(\n {\n __type: object.className === '_File' ? 'File' : 'Object',\n },\n object\n )\n );\n if (updatedKeys) {\n /**\n * An existing AV.Object which fulfills the Query you subscribe is updated.\n * @event AV.LiveQuery#update\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n /**\n * An existing AV.Object which doesn't fulfill the Query is updated and now it fulfills the Query.\n * @event AV.LiveQuery#enter\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n /**\n * An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query.\n * @event AV.LiveQuery#leave\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n this.emit(op, target, updatedKeys);\n } else {\n /**\n * A new AV.Object which fulfills the Query you subscribe is created.\n * @event AV.LiveQuery#create\n * @param {AV.Object|AV.File} target updated object\n */\n /**\n * An existing AV.Object which fulfills the Query you subscribe is deleted.\n * @event AV.LiveQuery#delete\n * @param {AV.Object|AV.File} target updated object\n */\n this.emit(op, target);\n }\n });\n },\n /**\n * unsubscribe the query\n *\n * @return {Promise}\n */\n unsubscribe() {\n const client = this._client;\n client.off('message', this._onMessage);\n client.off('reconnect', this._onReconnect);\n client.deregister(this);\n return request({\n method: 'POST',\n path: '/LiveQuery/unsubscribe',\n data: {\n id: client.id,\n query_id: this.id,\n },\n });\n },\n },\n /** @lends AV.LiveQuery */\n {\n init(\n query,\n {\n subscriptionId: userDefinedSubscriptionId = AV._getSubscriptionId(),\n } = {}\n ) {\n requireRealtime();\n if (!(query instanceof AV.Query))\n throw new TypeError('LiveQuery must be inited with a Query');\n return Promise.resolve(userDefinedSubscriptionId).then(subscriptionId =>\n AV._config.realtime\n .createLiveQueryClient(subscriptionId)\n .then(liveQueryClient => {\n const { where, keys, returnACL } = query._getParams();\n const queryJSON = {\n where,\n keys,\n returnACL,\n className: query.className,\n };\n const promise = subscribe(queryJSON, subscriptionId)\n .then(\n ({ query_id: queryId }) =>\n new AV.LiveQuery(\n queryId,\n liveQueryClient,\n queryJSON,\n subscriptionId\n )\n )\n .finally(() => {\n liveQueryClient.deregister(promise);\n });\n liveQueryClient.register(promise);\n return promise;\n })\n );\n },\n /**\n * Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background.\n * @static\n * @return void\n */\n pause() {\n requireRealtime();\n return AV._config.realtime.pause();\n },\n /**\n * Resume the LiveQuery connection. All subscriptions will be restored after reconnection.\n * @static\n * @return void\n */\n resume() {\n requireRealtime();\n return AV._config.realtime.resume();\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/live-query.js","const _ = require('underscore');\nconst { tap } = require('./utils');\n\nmodule.exports = AV => {\n /**\n * @class\n * @example\n * AV.Captcha.request().then(captcha => {\n * captcha.bind({\n * textInput: 'code', // the id for textInput\n * image: 'captcha',\n * verifyButton: 'verify',\n * }, {\n * success: (validateCode) => {}, // next step\n * error: (error) => {}, // present error.message to user\n * });\n * });\n */\n AV.Captcha = function Captcha(options, authOptions) {\n this._options = options;\n this._authOptions = authOptions;\n /**\n * The image url of the captcha\n * @type string\n */\n this.url = undefined;\n /**\n * The captchaToken of the captcha.\n * @type string\n */\n this.captchaToken = undefined;\n /**\n * The validateToken of the captcha.\n * @type string\n */\n this.validateToken = undefined;\n };\n\n /**\n * Refresh the captcha\n * @return {Promise.<string>} a new capcha url\n */\n AV.Captcha.prototype.refresh = function refresh() {\n return AV.Cloud._requestCaptcha(this._options, this._authOptions).then(\n ({ captchaToken, url }) => {\n _.extend(this, { captchaToken, url });\n return url;\n }\n );\n };\n\n /**\n * Verify the captcha\n * @param {String} code The code from user input\n * @return {Promise.<string>} validateToken if the code is valid\n */\n AV.Captcha.prototype.verify = function verify(code) {\n return AV.Cloud.verifyCaptcha(code, this.captchaToken).then(\n tap(validateToken => (this.validateToken = validateToken))\n );\n };\n\n if (process.env.PLATFORM === 'Browser') {\n /**\n * Bind the captcha to HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n * @param [elements]\n * @param {String|HTMLInputElement} [elements.textInput] An input element typed text, or the id for the element.\n * @param {String|HTMLImageElement} [elements.image] An image element, or the id for the element.\n * @param {String|HTMLElement} [elements.verifyButton] A button element, or the id for the element.\n * @param [callbacks]\n * @param {Function} [callbacks.success] Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request.\n * @param {Function} [callbacks.error] Error callback will be called if something goes wrong, detailed in param `error.message`.\n */\n AV.Captcha.prototype.bind = function bind(\n { textInput, image, verifyButton },\n { success, error }\n ) {\n if (typeof textInput === 'string') {\n textInput = document.getElementById(textInput);\n if (!textInput)\n throw new Error(`textInput with id ${textInput} not found`);\n }\n if (typeof image === 'string') {\n image = document.getElementById(image);\n if (!image) throw new Error(`image with id ${image} not found`);\n }\n if (typeof verifyButton === 'string') {\n verifyButton = document.getElementById(verifyButton);\n if (!verifyButton)\n throw new Error(`verifyButton with id ${verifyButton} not found`);\n }\n\n this.__refresh = () =>\n this.refresh()\n .then(url => {\n image.src = url;\n if (textInput) {\n textInput.value = '';\n textInput.focus();\n }\n })\n .catch(err => console.warn(`refresh captcha fail: ${err.message}`));\n if (image) {\n this.__image = image;\n image.src = this.url;\n image.addEventListener('click', this.__refresh);\n }\n\n this.__verify = () => {\n const code = textInput.value;\n this.verify(code)\n .catch(err => {\n this.__refresh();\n throw err;\n })\n .then(success, error)\n .catch(err => console.warn(`verify captcha fail: ${err.message}`));\n };\n if (textInput && verifyButton) {\n this.__verifyButton = verifyButton;\n verifyButton.addEventListener('click', this.__verify);\n }\n };\n\n /**\n * unbind the captcha from HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n */\n AV.Captcha.prototype.unbind = function unbind() {\n if (this.__image)\n this.__image.removeEventListener('click', this.__refresh);\n if (this.__verifyButton)\n this.__verifyButton.removeEventListener('click', this.__verify);\n };\n }\n\n /**\n * Request a captcha\n * @param [options]\n * @param {Number} [options.width] width(px) of the captcha, ranged 60-200\n * @param {Number} [options.height] height(px) of the captcha, ranged 30-100\n * @param {Number} [options.size=4] length of the captcha, ranged 3-6. MasterKey required.\n * @param {Number} [options.ttl=60] time to live(s), ranged 10-180. MasterKey required.\n * @return {Promise.<AV.Captcha>}\n */\n AV.Captcha.request = (options, authOptions) => {\n const captcha = new AV.Captcha(options, authOptions);\n return captcha.refresh().then(() => captcha);\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/captcha.js","const _ = require('underscore');\nconst { _request, request } = require('./request');\n\nmodule.exports = function(AV) {\n /**\n * Contains functions for calling and declaring\n * <p><strong><em>\n * Some functions are only available from Cloud Code.\n * </em></strong></p>\n *\n * @namespace\n * @borrows AV.Captcha.request as requestCaptcha\n */\n AV.Cloud = AV.Cloud || {};\n\n _.extend(\n AV.Cloud,\n /** @lends AV.Cloud */ {\n /**\n * Makes a call to a cloud function.\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n run(name, data, options) {\n return request({\n service: 'engine',\n method: 'POST',\n path: `/functions/${name}`,\n data: AV._encode(data, null, true),\n authOptions: options,\n }).then(resp => {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response\n * from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object}\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result of the function.\n */\n rpc(name, data, options) {\n if (_.isArray(data)) {\n return Promise.reject(\n new Error(\n \"Can't pass Array as the param of rpc function in JavaScript SDK.\"\n )\n );\n }\n\n return request({\n service: 'engine',\n method: 'POST',\n path: `/call/${name}`,\n data: AV._encodeObjectOrArray(data),\n authOptions: options,\n }).then(resp => {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Make a call to request server date time.\n * @return {Promise.<Date>} A promise that will be resolved with the result\n * of the function.\n * @since 0.5.9\n */\n getServerDate() {\n return _request('date', null, null, 'GET').then(function(resp) {\n return AV._decode(resp);\n });\n },\n\n /**\n * Makes a call to request an sms code for operation verification.\n * @param {String|Object} data The mobile phone number string or a JSON\n * object that contains mobilePhoneNumber,template,sign,op,ttl,name etc.\n * @param {String} data.mobilePhoneNumber\n * @param {String} [data.template] sms template name\n * @param {String} [data.sign] sms signature name\n * @param {String} [data.smsType] sending code by `sms` (default) or `voice` call\n * @param {SMSAuthOptions} [options]\n * @return {Promise} A promise that will be resolved if the request succeed\n */\n requestSmsCode(data, options = {}) {\n if (_.isString(data)) {\n data = { mobilePhoneNumber: data };\n }\n if (!data.mobilePhoneNumber) {\n throw new Error('Missing mobilePhoneNumber.');\n }\n if (options.validateToken) {\n data = _.extend({}, data, {\n validate_token: options.validateToken,\n });\n }\n return _request('requestSmsCode', null, null, 'POST', data, options);\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.Cloud.requestSmsCode\n * @param {String} code The sms code sent by AV.Cloud.requestSmsCode\n * @param {phone} phone The mobile phoner number.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifySmsCode(code, phone) {\n if (!code) throw new Error('Missing sms code.');\n var params = {};\n if (_.isString(phone)) {\n params['mobilePhoneNumber'] = phone;\n }\n\n return _request('verifySmsCode', code, null, 'POST', params);\n },\n\n _requestCaptcha(options, authOptions) {\n return _request(\n 'requestCaptcha',\n null,\n null,\n 'GET',\n options,\n authOptions\n ).then(({ captcha_url: url, captcha_token: captchaToken }) => ({\n captchaToken,\n url,\n }));\n },\n\n /**\n * Request a captcha.\n */\n requestCaptcha: AV.Captcha.request,\n\n /**\n * Verify captcha code. This is the low-level API for captcha.\n * Checkout {@link AV.Captcha} for high abstract APIs.\n * @param {String} code the code from user input\n * @param {String} captchaToken captchaToken returned by {@link AV.Cloud.requestCaptcha}\n * @return {Promise.<String>} validateToken if the code is valid\n */\n verifyCaptcha(code, captchaToken) {\n return _request('verifyCaptcha', null, null, 'POST', {\n captcha_code: code,\n captcha_token: captchaToken,\n }).then(({ validate_token: validateToken }) => validateToken);\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/cloudfunction.js","const request = require('./request').request;\n\nmodule.exports = function(AV) {\n AV.Installation = AV.Object.extend('_Installation');\n\n /**\n * @namespace\n */\n AV.Push = AV.Push || {};\n\n /**\n * Sends a push notification.\n * @param {Object} data The data of the push notification.\n * @param {String[]} [data.channels] An Array of channels to push to.\n * @param {Date} [data.push_time] A Date object for when to send the push.\n * @param {Date} [data.expiration_time] A Date object for when to expire\n * the push.\n * @param {Number} [data.expiration_interval] The seconds from now to expire the push.\n * @param {Number} [data.flow_control] The clients to notify per second\n * @param {AV.Query} [data.where] An AV.Query over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {String} [data.cql] A CQL statement over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {Object} data.data The data to send as part of the push.\n More details: https://url.leanapp.cn/pushData\n * @param {AuthOptions} [options]\n * @return {Promise}\n */\n AV.Push.send = function(data, options) {\n if (data.where) {\n data.where = data.where._getParams().where;\n }\n\n if (data.where && data.cql) {\n throw new Error(\"Both where and cql can't be set\");\n }\n\n if (data.push_time) {\n data.push_time = data.push_time.toJSON();\n }\n\n if (data.expiration_time) {\n data.expiration_time = data.expiration_time.toJSON();\n }\n\n if (data.expiration_time && data.expiration_interval) {\n throw new Error(\n \"Both expiration_time and expiration_interval can't be set\"\n );\n }\n\n return request({\n service: 'push',\n method: 'POST',\n path: '/push',\n data,\n authOptions: options,\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/push.js","const _ = require('underscore');\nconst AVRequest = require('./request')._request;\nconst { getSessionToken } = require('./utils');\n\nmodule.exports = function(AV) {\n const getUser = (options = {}) => {\n const sessionToken = getSessionToken(options);\n if (sessionToken) {\n return AV.User._fetchUserBySessionToken(getSessionToken(options));\n }\n return AV.User.currentAsync();\n };\n\n const getUserPointer = options =>\n getUser(options).then(currUser =>\n AV.Object.createWithoutData('_User', currUser.id)._toPointer()\n );\n\n /**\n * Contains functions to deal with Status in LeanCloud.\n * @class\n */\n AV.Status = function(imageUrl, message) {\n this.data = {};\n this.inboxType = 'default';\n this.query = null;\n if (imageUrl && typeof imageUrl === 'object') {\n this.data = imageUrl;\n } else {\n if (imageUrl) {\n this.data.image = imageUrl;\n }\n if (message) {\n this.data.message = message;\n }\n }\n return this;\n };\n\n _.extend(\n AV.Status.prototype,\n /** @lends AV.Status.prototype */ {\n /**\n * Gets the value of an attribute in status data.\n * @param {String} attr The string name of an attribute.\n */\n get: function(attr) {\n return this.data[attr];\n },\n /**\n * Sets a hash of model attributes on the status data.\n * @param {String} key The key to set.\n * @param {} value The value to give it.\n */\n set: function(key, value) {\n this.data[key] = value;\n return this;\n },\n /**\n * Destroy this status,then it will not be avaiable in other user's inboxes.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function(options) {\n if (!this.id)\n return Promise.reject(new Error('The status id is not exists.'));\n var request = AVRequest('statuses', null, this.id, 'DELETE', options);\n return request;\n },\n /**\n * Cast the AV.Status object to an AV.Object pointer.\n * @return {AV.Object} A AV.Object pointer.\n */\n toObject: function() {\n if (!this.id) return null;\n return AV.Object.createWithoutData('_Status', this.id);\n },\n _getDataJSON: function() {\n var json = _.clone(this.data);\n return AV._encode(json);\n },\n /**\n * Send a status by a AV.Query object.\n * @since 0.3.0\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a status to male users\n * var status = new AVStatus('image url', 'a message');\n * status.query = new AV.Query('_User');\n * status.query.equalTo('gender', 'male');\n * status.send().then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n send: function(options = {}) {\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n if (!this.query) {\n return AV.Status.sendStatusToFollowers(this, options);\n }\n\n return getUserPointer(options)\n .then(currUser => {\n var query = this.query._getParams();\n query.className = this.query.className;\n var data = {};\n data.query = query;\n this.data = this.data || {};\n this.data.source = this.data.source || currUser;\n data.data = this._getDataJSON();\n data.inboxType = this.inboxType || 'default';\n\n return AVRequest('statuses', null, null, 'POST', data, options);\n })\n .then(response => {\n this.id = response.objectId;\n this.createdAt = AV._parseDate(response.createdAt);\n return this;\n });\n },\n\n _finishFetch: function(serverData) {\n this.id = serverData.objectId;\n this.createdAt = AV._parseDate(serverData.createdAt);\n this.updatedAt = AV._parseDate(serverData.updatedAt);\n this.messageId = serverData.messageId;\n delete serverData.messageId;\n delete serverData.objectId;\n delete serverData.createdAt;\n delete serverData.updatedAt;\n this.data = AV._decode(serverData);\n },\n }\n );\n\n /**\n * Send a status to current signined user's followers.\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendStatusToFollowers(status).then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n AV.Status.sendStatusToFollowers = function(status, options = {}) {\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n return getUserPointer(options).then(currUser => {\n var query = {};\n query.className = '_Follower';\n query.keys = 'follower';\n query.where = { user: currUser };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = status.inboxType || 'default';\n\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function(response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n\n /**\n * <p>Send a status from current signined user to other user's private status inbox.</p>\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {String} target The target user or user's objectId.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a private status to user '52e84e47e4b0f8de283b079b'\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendPrivateStatus(status, '52e84e47e4b0f8de283b079b').then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n AV.Status.sendPrivateStatus = function(status, target, options = {}) {\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n if (!target) {\n throw new Error('Invalid target user.');\n }\n var userObjectId = _.isString(target) ? target : target.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n return getUserPointer(options).then(currUser => {\n var query = {};\n query.className = '_User';\n query.where = { objectId: userObjectId };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = 'private';\n status.inboxType = 'private';\n\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function(response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n\n /**\n * Count unread statuses in someone's inbox.\n * @since 0.3.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the count\n * completes.\n * @example\n * AV.Status.countUnreadStatuses(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n AV.Status.countUnreadStatuses = function(\n owner,\n inboxType = 'default',\n options = {}\n ) {\n if (!_.isString(inboxType)) options = inboxType;\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n return Promise.resolve(owner || getUser(options)).then(owner => {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest(\n 'subscribe/statuses/count',\n null,\n null,\n 'GET',\n params,\n options\n );\n });\n };\n\n /**\n * reset unread statuses count in someone's inbox.\n * @since 2.1.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the reset\n * completes.\n * @example\n * AV.Status.resetUnreadCount(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n AV.Status.resetUnreadCount = function(\n owner,\n inboxType = 'default',\n options = {}\n ) {\n if (!_.isString(inboxType)) options = inboxType;\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n return Promise.resolve(owner || getUser(options)).then(owner => {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest(\n 'subscribe/statuses/resetUnreadCount',\n null,\n null,\n 'POST',\n params,\n options\n );\n });\n };\n\n /**\n * Create a status query to find someone's published statuses.\n * @since 0.3.0\n * @param {AV.User} source The status source, typically the publisher.\n * @return {AV.Query} The query object for status.\n * @example\n * //Find current user's published statuses.\n * var query = AV.Status.statusQuery(AV.User.current());\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n AV.Status.statusQuery = function(source) {\n var query = new AV.Query('_Status');\n if (source) {\n query.equalTo('source', source);\n }\n return query;\n };\n\n /**\n * <p>AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.</p>\n * @class\n */\n AV.InboxQuery = AV.Query._extend(\n /** @lends AV.InboxQuery.prototype */ {\n _objectClass: AV.Status,\n _sinceId: 0,\n _maxId: 0,\n _inboxType: 'default',\n _owner: null,\n _newObject: function() {\n return new AV.Status();\n },\n _createRequest: function(params, options) {\n return AV.InboxQuery.__super__._createRequest.call(\n this,\n params,\n options,\n '/subscribe/statuses'\n );\n },\n\n /**\n * Sets the messageId of results to skip before returning any results.\n * This is useful for pagination.\n * Default is zero.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n sinceId: function(id) {\n this._sinceId = id;\n return this;\n },\n /**\n * Sets the maximal messageId of results。\n * This is useful for pagination.\n * Default is zero that is no limition.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n maxId: function(id) {\n this._maxId = id;\n return this;\n },\n /**\n * Sets the owner of the querying inbox.\n * @param {AV.User} owner The inbox owner.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n owner: function(owner) {\n this._owner = owner;\n return this;\n },\n /**\n * Sets the querying inbox type.default is 'default'.\n * @param {Object} type The inbox type.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n inboxType: function(type) {\n this._inboxType = type;\n return this;\n },\n _getParams: function() {\n var params = AV.InboxQuery.__super__._getParams.call(this);\n params.owner = AV._encode(this._owner);\n params.inboxType = AV._encode(this._inboxType);\n params.sinceId = AV._encode(this._sinceId);\n params.maxId = AV._encode(this._maxId);\n return params;\n },\n }\n );\n\n /**\n * Create a inbox status query to find someone's inbox statuses.\n * @since 0.3.0\n * @param {AV.User} owner The inbox's owner\n * @param {String} inboxType The inbox type,'default' by default.\n * @return {AV.InboxQuery} The inbox query object.\n * @see AV.InboxQuery\n * @example\n * //Find current user's default inbox statuses.\n * var query = AV.Status.inboxQuery(AV.User.current());\n * //find the statuses after the last message id\n * query.sinceId(lastMessageId);\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n AV.Status.inboxQuery = function(owner, inboxType) {\n var query = new AV.InboxQuery(AV.Status);\n if (owner) {\n query._owner = owner;\n }\n if (inboxType) {\n query._inboxType = inboxType;\n }\n return query;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/status.js","const _ = require('underscore');\nconst AVRequest = require('./request')._request;\n\nmodule.exports = function(AV) {\n /**\n * A builder to generate sort string for app searching.For example:\n * @class\n * @since 0.5.1\n * @example\n * var builder = new AV.SearchSortBuilder();\n * builder.ascending('key1').descending('key2','max');\n * var query = new AV.SearchQuery('Player');\n * query.sortBy(builder);\n * query.find().then();\n */\n AV.SearchSortBuilder = function() {\n this._sortFields = [];\n };\n\n _.extend(\n AV.SearchSortBuilder.prototype,\n /** @lends AV.SearchSortBuilder.prototype */ {\n _addField: function(key, order, mode, missing) {\n var field = {};\n field[key] = {\n order: order || 'asc',\n mode: mode || 'avg',\n missing: '_' + (missing || 'last'),\n };\n this._sortFields.push(field);\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n ascending: function(key, mode, missing) {\n return this._addField(key, 'asc', mode, missing);\n },\n\n /**\n * Sorts the results in descending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n descending: function(key, mode, missing) {\n return this._addField(key, 'desc', mode, missing);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Object} options The other options such as mode,order, unit etc.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n whereNear: function(key, point, options) {\n options = options || {};\n var field = {};\n var geo = {\n lat: point.latitude,\n lon: point.longitude,\n };\n var m = {\n order: options.order || 'asc',\n mode: options.mode || 'avg',\n unit: options.unit || 'km',\n };\n m[key] = geo;\n field['_geo_distance'] = m;\n\n this._sortFields.push(field);\n return this;\n },\n\n /**\n * Build a sort string by configuration.\n * @return {String} the sort string.\n */\n build: function() {\n return JSON.stringify(AV._encode(this._sortFields));\n },\n }\n );\n\n /**\n * App searching query.Use just like AV.Query:\n *\n * Visit <a href='https://leancloud.cn/docs/app_search_guide.html'>App Searching Guide</a>\n * for more details.\n * @class\n * @since 0.5.1\n * @example\n * var query = new AV.SearchQuery('Player');\n * query.queryString('*');\n * query.find().then(function(results) {\n * console.log('Found %d objects', query.hits());\n * //Process results\n * });\n */\n AV.SearchQuery = AV.Query._extend(\n /** @lends AV.SearchQuery.prototype */ {\n _sid: null,\n _hits: 0,\n _queryString: null,\n _highlights: null,\n _sortBuilder: null,\n _clazz: null,\n\n constructor: function(className) {\n if (className) {\n this._clazz = className;\n } else {\n className = '__INVALID_CLASS';\n }\n AV.Query.call(this, className);\n },\n\n _createRequest: function(params, options) {\n return AVRequest(\n 'search/select',\n null,\n null,\n 'GET',\n params || this._getParams(),\n options\n );\n },\n\n /**\n * Sets the sid of app searching query.Default is null.\n * @param {String} sid Scroll id for searching.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n sid: function(sid) {\n this._sid = sid;\n return this;\n },\n\n /**\n * Sets the query string of app searching.\n * @param {String} q The query string.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n queryString: function(q) {\n this._queryString = q;\n return this;\n },\n\n /**\n * Sets the highlight fields. Such as\n * <pre><code>\n * query.highlights('title');\n * //or pass an array.\n * query.highlights(['title', 'content'])\n * </code></pre>\n * @param {String|String[]} highlights a list of fields.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n highlights: function(highlights) {\n var objects;\n if (highlights && _.isString(highlights)) {\n objects = _.toArray(arguments);\n } else {\n objects = highlights;\n }\n this._highlights = objects;\n return this;\n },\n\n /**\n * Sets the sort builder for this query.\n * @see AV.SearchSortBuilder\n * @param { AV.SearchSortBuilder} builder The sort builder.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n *\n */\n sortBy: function(builder) {\n this._sortBuilder = builder;\n return this;\n },\n\n /**\n * Returns the number of objects that match this query.\n * @return {Number}\n */\n hits: function() {\n if (!this._hits) {\n this._hits = 0;\n }\n return this._hits;\n },\n\n _processResult: function(json) {\n delete json['className'];\n delete json['_app_url'];\n delete json['_deeplink'];\n return json;\n },\n\n /**\n * Returns true when there are more documents can be retrieved by this\n * query instance, you can call find function to get more results.\n * @see AV.SearchQuery#find\n * @return {Boolean}\n */\n hasMore: function() {\n return !this._hitEnd;\n },\n\n /**\n * Reset current query instance state(such as sid, hits etc) except params\n * for a new searching. After resetting, hasMore() will return true.\n */\n reset: function() {\n this._hitEnd = false;\n this._sid = null;\n this._hits = 0;\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n * Either options.success or options.error is called when the find\n * completes.\n *\n * @see AV.Query#find\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find: function(options) {\n var self = this;\n\n var request = this._createRequest(undefined, options);\n\n return request.then(function(response) {\n //update sid for next querying.\n if (response.sid) {\n self._oldSid = self._sid;\n self._sid = response.sid;\n } else {\n self._sid = null;\n self._hitEnd = true;\n }\n self._hits = response.hits || 0;\n\n return _.map(response.results, function(json) {\n if (json.className) {\n response.className = json.className;\n }\n var obj = self._newObject(response);\n obj.appURL = json['_app_url'];\n obj._finishFetch(self._processResult(json), true);\n return obj;\n });\n });\n },\n\n _getParams: function() {\n var params = AV.SearchQuery.__super__._getParams.call(this);\n delete params.where;\n if (this._clazz) {\n params.clazz = this.className;\n }\n if (this._sid) {\n params.sid = this._sid;\n }\n if (!this._queryString) {\n throw new Error('Please set query string.');\n } else {\n params.q = this._queryString;\n }\n if (this._highlights) {\n params.highlights = this._highlights.join(',');\n }\n if (this._sortBuilder && params.order) {\n throw new Error('sort and order can not be set at same time.');\n }\n if (this._sortBuilder) {\n params.sort = this._sortBuilder.build();\n }\n\n return params;\n },\n }\n );\n};\n\n/**\n * Sorts the results in ascending order by the given key.\n *\n * @method AV.SearchQuery#ascending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addAscending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n/**\n * Sorts the results in descending order by the given key.\n *\n * @method AV.SearchQuery#descending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addDescending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n/**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @method AV.SearchQuery#include\n * @param {String[]} keys The name of the key to include.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @method AV.SearchQuery#skip\n * @param {Number} n the number of results to skip.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @method AV.SearchQuery#limit\n * @param {Number} n the number of results to limit to.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n\n\n// WEBPACK FOOTER //\n// ./src/search.js","const _ = require('underscore');\nconst AVError = require('./error');\nconst { request } = require('./request');\n\nmodule.exports = function(AV) {\n /**\n * 包含了使用了 LeanCloud\n * <a href='/docs/leaninsight_guide.html'>离线数据分析功能</a>的函数。\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @namespace\n */\n AV.Insight = AV.Insight || {};\n\n _.extend(\n AV.Insight,\n /** @lends AV.Insight */ {\n /**\n * 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用\n * AV.Insight.JobQuery 查询任务状态和结果。\n * @param {Object} jobConfig 任务配置的 JSON 对象,例如:<code><pre>\n * { \"sql\" : \"select count(*) as c,gender from _User group by gender\",\n * \"saveAs\": {\n * \"className\" : \"UserGender\",\n * \"limit\": 1\n * }\n * }\n * </pre></code>\n * sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n startJob: function(jobConfig, options) {\n if (!jobConfig || !jobConfig.sql) {\n throw new Error('Please provide the sql to run the job.');\n }\n var data = {\n jobConfig: jobConfig,\n appId: AV.applicationId,\n };\n return request({\n path: '/bigquery/jobs',\n method: 'POST',\n data: AV._encode(data, null, true),\n authOptions: options,\n signKey: false,\n }).then(resp => AV._decode(resp).id);\n },\n\n /**\n * 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放)\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @param {String} event 监听的事件,目前尚不支持。\n * @param {Function} 监听回调函数,接收 (err, id) 两个参数,err 表示错误信息,\n * id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。\n *\n */\n on: function(event, cb) {},\n }\n );\n\n /**\n * 创建一个对象,用于查询 Insight 任务状态和结果。\n * @class\n * @param {String} id 任务 id\n * @since 0.5.5\n */\n AV.Insight.JobQuery = function(id, className) {\n if (!id) {\n throw new Error('Please provide the job id.');\n }\n this.id = id;\n this.className = className;\n this._skip = 0;\n this._limit = 100;\n };\n\n _.extend(\n AV.Insight.JobQuery.prototype,\n /** @lends AV.Insight.JobQuery.prototype */ {\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function(n) {\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function(n) {\n this._limit = n;\n return this;\n },\n\n /**\n * 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数,\n * results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间\n * startTime、endTime 等信息。\n *\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n *\n */\n find: function(options) {\n var params = {\n skip: this._skip,\n limit: this._limit,\n };\n\n return request({\n path: `/bigquery/jobs/${this.id}`,\n method: 'GET',\n query: params,\n authOptions: options,\n signKey: false,\n }).then(function(response) {\n if (response.error) {\n return Promise.reject(new AVError(response.code, response.error));\n }\n return Promise.resolve(response);\n });\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/insight.js","const _ = require('underscore');\nconst { request: LCRequest } = require('./request');\nconst { getSessionToken } = require('./utils');\n\nmodule.exports = function(AV) {\n /**\n * Contains functions to deal with Friendship in LeanCloud.\n * @class\n */\n AV.Friendship = {\n /**\n * Request friendship.\n * @since 4.8.0\n * @param {String | AV.User | Object} options if an AV.User or string is given, it will be used as the friend.\n * @param {AV.User | string} options.friend The friend (or friend's objectId) to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of followeeQuery.\n * @param {*} [authOptions]\n * @return {Promise<void>}\n */\n request: function(options, authOptions) {\n if (!AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n let friend;\n let attributes;\n if (options.friend) {\n friend = options.friend;\n attributes = options.attributes;\n } else {\n friend = options;\n }\n const friendObject = _.isString(friend)\n ? AV.Object.createWithoutData('_User', friend)\n : friend;\n return LCRequest({\n method: 'POST',\n path: '/users/friendshipRequests',\n data: AV._encode({\n user: AV.User.current(),\n friend: friendObject,\n friendship: attributes,\n }),\n authOptions,\n });\n },\n\n /**\n * Accept a friendship request.\n * @since 4.8.0\n * @param {AV.Object | string | Object} options if an AV.Object or string is given, it will be used as the request in _FriendshipRequest.\n * @param {AV.Object} options.request The request (or it's objectId) to be accepted.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of {@link AV#followeeQuery}.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n acceptRequest: function(options, authOptions = {}) {\n if (!getSessionToken(authOptions) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n let request;\n let attributes;\n if (options.request) {\n request = options.request;\n attributes = options.attributes;\n } else {\n request = options;\n }\n const requestId = _.isString(request) ? request : request.id;\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/accept',\n data: {\n friendship: AV._encode(attributes),\n },\n authOptions,\n });\n },\n\n /**\n * Decline a friendship request.\n * @param {AV.Object | string} request The request (or it's objectId) to be declined.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n declineRequest: function(request, authOptions = {}) {\n if (!getSessionToken(authOptions) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n const requestId = _.isString(request) ? request : request.id;\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/decline',\n authOptions,\n });\n },\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/friendship.js","const _ = require('underscore');\nconst { _request } = require('./request');\nconst AV = require('./av');\n\nconst serializeMessage = message => {\n if (typeof message === 'string') {\n return message;\n }\n if (typeof message.getPayload === 'function') {\n return JSON.stringify(message.getPayload());\n }\n return JSON.stringify(message);\n};\n\n/**\n * <p>An AV.Conversation is a local representation of a LeanCloud realtime's\n * conversation. This class is a subclass of AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * conversation specific methods, like get members, creators of this conversation.\n * </p>\n *\n * @class AV.Conversation\n * @param {String} name The name of the Role to create.\n * @param {Object} [options]\n * @param {Boolean} [options.isSystem] Set this conversation as system conversation.\n * @param {Boolean} [options.isTransient] Set this conversation as transient conversation.\n */\nmodule.exports = AV.Object.extend(\n '_Conversation',\n /** @lends AV.Conversation.prototype */ {\n constructor(name, options = {}) {\n AV.Object.prototype.constructor.call(this, null, null);\n this.set('name', name);\n if (options.isSystem !== undefined) {\n this.set('sys', options.isSystem ? true : false);\n }\n if (options.isTransient !== undefined) {\n this.set('tr', options.isTransient ? true : false);\n }\n },\n /**\n * Get current conversation's creator.\n *\n * @return {String}\n */\n getCreator() {\n return this.get('c');\n },\n\n /**\n * Get the last message's time.\n *\n * @return {Date}\n */\n getLastMessageAt() {\n return this.get('lm');\n },\n\n /**\n * Get this conversation's members\n *\n * @return {String[]}\n */\n getMembers() {\n return this.get('m');\n },\n\n /**\n * Add a member to this conversation\n *\n * @param {String} member\n */\n addMember(member) {\n return this.add('m', member);\n },\n\n /**\n * Get this conversation's members who set this conversation as muted.\n *\n * @return {String[]}\n */\n getMutedMembers() {\n return this.get('mu');\n },\n\n /**\n * Get this conversation's name field.\n *\n * @return String\n */\n getName() {\n return this.get('name');\n },\n\n /**\n * Returns true if this conversation is transient conversation.\n *\n * @return {Boolean}\n */\n isTransient() {\n return this.get('tr');\n },\n\n /**\n * Returns true if this conversation is system conversation.\n *\n * @return {Boolean}\n */\n isSystem() {\n return this.get('sys');\n },\n\n /**\n * Send realtime message to this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}\n * @param {Object} [options]\n * @param {Boolean} [options.transient] Whether send this message as transient message or not.\n * @param {String[]} [options.toClients] Ids of clients to send to. This option can be used only in system conversation.\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n send(fromClient, message, options = {}, authOptions = {}) {\n const data = {\n from_peer: fromClient,\n conv_id: this.id,\n transient: false,\n message: serializeMessage(message),\n };\n if (options.toClients !== undefined) {\n data.to_peers = options.toClients;\n }\n if (options.transient !== undefined) {\n data.transient = options.transient ? true : false;\n }\n if (options.pushData !== undefined) {\n data.push_data = options.pushData;\n }\n return _request('rtm', 'messages', null, 'POST', data, authOptions);\n },\n\n /**\n * Send realtime broadcast message to all clients, via this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}.\n * @param {Object} [options]\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}.\n * @param {Object} [options.validTill] The message will valid till this time.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n broadcast(fromClient, message, options = {}, authOptions = {}) {\n const data = {\n from_peer: fromClient,\n conv_id: this.id,\n message: serializeMessage(message),\n };\n if (options.pushData !== undefined) {\n data.push = options.pushData;\n }\n if (options.validTill !== undefined) {\n let ts = options.validTill;\n if (_.isDate(ts)) {\n ts = ts.getTime();\n }\n options.valid_till = ts;\n }\n return _request('rtm', 'broadcast', null, 'POST', data, authOptions);\n },\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/conversation.js","const _ = require('underscore');\nconst { request } = require('./request');\nconst { ensureArray, parseDate } = require('./utils');\nconst AV = require('./av');\n\n/**\n * The version change interval for Leaderboard\n * @enum\n */\nAV.LeaderboardVersionChangeInterval = {\n NEVER: 'never',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month',\n};\n\n/**\n * The order of the leaderboard results\n * @enum\n */\nAV.LeaderboardOrder = {\n ASCENDING: 'ascending',\n DESCENDING: 'descending',\n};\n\n/**\n * The update strategy for Leaderboard\n * @enum\n */\nAV.LeaderboardUpdateStrategy = {\n /** Only keep the best statistic. If the leaderboard is in descending order, the best statistic is the highest one. */\n BETTER: 'better',\n /** Keep the last updated statistic */\n LAST: 'last',\n /** Keep the sum of all updated statistics */\n SUM: 'sum',\n};\n\n/**\n * @typedef {Object} Ranking\n * @property {number} rank Starts at 0\n * @property {number} value the statistic value of this ranking\n * @property {AV.User} user The user of this ranking\n * @property {Statistic[]} [includedStatistics] Other statistics of the user, specified by the `includeStatistic` option of `AV.Leaderboard.getResults()`\n */\n\n/**\n * @typedef {Object} LeaderboardArchive\n * @property {string} statisticName\n * @property {number} version version of the leaderboard\n * @property {string} status\n * @property {string} url URL for the downloadable archive\n * @property {Date} activatedAt time when this version became active\n * @property {Date} deactivatedAt time when this version was deactivated by a version incrementing\n */\n\n/**\n * @class\n */\nfunction Statistic({ name, value, version }) {\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {number}\n */\n this.value = value;\n /**\n * @type {number?}\n */\n this.version = version;\n}\n\nconst parseStatisticData = statisticData => {\n const { statisticName: name, statisticValue: value, version } = AV._decode(\n statisticData\n );\n return new Statistic({ name, value, version });\n};\n\n/**\n * @class\n */\nAV.Leaderboard = function Leaderboard(statisticName) {\n /**\n * @type {string}\n */\n this.statisticName = statisticName;\n /**\n * @type {AV.LeaderboardOrder}\n */\n this.order = undefined;\n /**\n * @type {AV.LeaderboardUpdateStrategy}\n */\n this.updateStrategy = undefined;\n /**\n * @type {AV.LeaderboardVersionChangeInterval}\n */\n this.versionChangeInterval = undefined;\n /**\n * @type {number}\n */\n this.version = undefined;\n /**\n * @type {Date?}\n */\n this.nextResetAt = undefined;\n /**\n * @type {Date?}\n */\n this.createdAt = undefined;\n};\nconst Leaderboard = AV.Leaderboard;\n\n/**\n * Create an instance of Leaderboard for the give statistic name.\n * @param {string} statisticName\n * @return {AV.Leaderboard}\n */\nAV.Leaderboard.createWithoutData = statisticName =>\n new Leaderboard(statisticName);\n/**\n * (masterKey required) Create a new Leaderboard.\n * @param {Object} options\n * @param {string} options.statisticName\n * @param {AV.LeaderboardOrder} options.order\n * @param {AV.LeaderboardVersionChangeInterval} [options.versionChangeInterval] default to WEEK\n * @param {AV.LeaderboardUpdateStrategy} [options.updateStrategy] default to BETTER\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\nAV.Leaderboard.createLeaderboard = (\n { statisticName, order, versionChangeInterval, updateStrategy },\n authOptions\n) =>\n request({\n method: 'POST',\n path: '/leaderboard/leaderboards',\n data: {\n statisticName,\n order,\n versionChangeInterval,\n updateStrategy,\n },\n authOptions,\n }).then(data => {\n const leaderboard = new Leaderboard(statisticName);\n return leaderboard._finishFetch(data);\n });\n/**\n * Get the Leaderboard with the specified statistic name.\n * @param {string} statisticName\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\nAV.Leaderboard.getLeaderboard = (statisticName, authOptions) =>\n Leaderboard.createWithoutData(statisticName).fetch(authOptions);\n/**\n * Get Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {string[]} [options.statisticNames] Specify the statisticNames. If not set, all statistics of the user will be fetched.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Statistic[]>}\n */\nAV.Leaderboard.getStatistics = (user, { statisticNames } = {}, authOptions) =>\n Promise.resolve().then(() => {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'GET',\n path: `/leaderboard/users/${user.id}/statistics`,\n query: {\n statistics: statisticNames\n ? ensureArray(statisticNames).join(',')\n : undefined,\n },\n authOptions,\n }).then(({ results }) => results.map(parseStatisticData));\n });\n\n/**\n * Update Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to update.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {boolean} [options.overwrite] Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards\n * @return {Promise<Statistic[]>}\n */\nAV.Leaderboard.updateStatistics = (user, statistics, options = {}) =>\n Promise.resolve().then(() => {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n const data = _.map(statistics, (value, key) => ({\n statisticName: key,\n statisticValue: value,\n }));\n const { overwrite } = options;\n return request({\n method: 'POST',\n path: `/leaderboard/users/${user.id}/statistics`,\n query: {\n overwrite: overwrite ? 1 : undefined,\n },\n data,\n authOptions: options,\n }).then(({ results }) => results.map(parseStatisticData));\n });\n\n/**\n * Delete Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to delete.\n * @param {AuthOptions} [options]\n * @return {Promise<void>}\n */\nAV.Leaderboard.deleteStatistics = (user, statisticNames, authOptions) =>\n Promise.resolve().then(() => {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'DELETE',\n path: `/leaderboard/users/${user.id}/statistics`,\n query: {\n statistics: ensureArray(statisticNames).join(','),\n },\n authOptions,\n }).then(() => undefined);\n });\n\n_.extend(\n Leaderboard.prototype,\n /** @lends AV.Leaderboard.prototype */ {\n _finishFetch(data) {\n _.forEach(data, (value, key) => {\n if (key === 'updatedAt' || key === 'objectId') return;\n if (key === 'expiredAt') {\n key = 'nextResetAt';\n }\n if (key === 'createdAt') {\n value = parseDate(value);\n }\n if (value && value.__type === 'Date') {\n value = parseDate(value.iso);\n }\n this[key] = value;\n });\n return this;\n },\n /**\n * Fetch data from the srever.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n fetch(authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}`,\n authOptions,\n }).then(data => this._finishFetch(data));\n },\n /**\n * Counts the number of users participated in this leaderboard\n * @param {Object} [options]\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<number>}\n */\n count({ version } = {}, authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/ranks`,\n query: {\n count: 1,\n limit: 0,\n version,\n },\n authOptions,\n }).then(({ count }) => count);\n },\n _getResults(\n {\n skip,\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n },\n authOptions,\n userId\n ) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/ranks${\n userId ? `/${userId}` : ''\n }`,\n query: {\n skip,\n limit,\n selectUserKeys:\n _.union(\n ensureArray(selectUserKeys),\n ensureArray(includeUserKeys)\n ).join(',') || undefined,\n includeUser: includeUserKeys\n ? ensureArray(includeUserKeys).join(',')\n : undefined,\n includeStatistics: includeStatistics\n ? ensureArray(includeStatistics).join(',')\n : undefined,\n version,\n },\n authOptions,\n }).then(({ results: rankings }) =>\n rankings.map(rankingData => {\n const {\n user,\n statisticValue: value,\n rank,\n statistics = [],\n } = AV._decode(rankingData);\n return {\n user,\n value,\n rank,\n includedStatistics: statistics.map(parseStatisticData),\n };\n })\n );\n },\n /**\n * Retrieve a list of ranked users for this Leaderboard.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResults(\n {\n skip,\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n } = {},\n authOptions\n ) {\n return this._getResults(\n {\n skip,\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n },\n authOptions\n );\n },\n /**\n * Retrieve a list of ranked users for this Leaderboard, centered on the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResultsAroundUser(user, options = {}, authOptions) {\n // getResultsAroundUser(options, authOptions)\n if (user && typeof user.id !== 'string') {\n return this.getResultsAroundUser(undefined, user, options);\n }\n const {\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n } = options;\n return this._getResults(\n { limit, selectUserKeys, includeUserKeys, includeStatistics, version },\n authOptions,\n user ? user.id : 'self'\n );\n },\n _update(data, authOptions) {\n return request({\n method: 'PUT',\n path: `/leaderboard/leaderboards/${this.statisticName}`,\n data,\n authOptions,\n }).then(result => this._finishFetch(result));\n },\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardVersionChangeInterval} versionChangeInterval\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateVersionChangeInterval(versionChangeInterval, authOptions) {\n return this._update({ versionChangeInterval }, authOptions);\n },\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardUpdateStrategy} updateStrategy\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateUpdateStrategy(updateStrategy, authOptions) {\n return this._update({ updateStrategy }, authOptions);\n },\n /**\n * (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n reset(authOptions) {\n return request({\n method: 'PUT',\n path: `/leaderboard/leaderboards/${this.statisticName}/incrementVersion`,\n authOptions,\n }).then(data => this._finishFetch(data));\n },\n /**\n * (masterKey required) Delete the Leaderboard and its all archived versions.\n * @param {AuthOptions} [authOptions]\n * @return {void}\n */\n destroy(authOptions) {\n return AV.request({\n method: 'DELETE',\n path: `/leaderboard/leaderboards/${this.statisticName}`,\n authOptions,\n }).then(() => undefined);\n },\n /**\n * (masterKey required) Get archived versions.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<LeaderboardArchive[]>}\n */\n getArchives({ skip, limit } = {}, authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/archives`,\n query: {\n skip,\n limit,\n },\n authOptions,\n }).then(({ results }) =>\n results.map(({ version, status, url, activatedAt, deactivatedAt }) => ({\n statisticName: this.statisticName,\n version,\n status,\n url,\n activatedAt: parseDate(activatedAt.iso),\n deactivatedAt: parseDate(deactivatedAt.iso),\n }))\n );\n },\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/leaderboard.js"],"sourceRoot":""}
\No newline at end of file