UNPKG

1.7 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap d8e265db7f804e6cdd46","webpack:///./node_modules/underscore/modules/index-all.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/underscore/modules/_setup.js","webpack:///./node_modules/babel-runtime/core-js/promise.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/underscore/modules/keys.js","webpack:///./node_modules/underscore/modules/_tagTester.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/core-js/library/modules/_is-object.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/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_descriptors.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/_object-dp.js","webpack:///./node_modules/babel-runtime/core-js/json/stringify.js","webpack:///./node_modules/core-js/library/modules/_ctx.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/_has.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/underscore/modules/isObject.js","webpack:///./node_modules/underscore/modules/isArray.js","webpack:///./node_modules/underscore/modules/each.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./src/error.js","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/library/modules/_for-of.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:///./src/adapter.js","webpack:///./node_modules/babel-runtime/helpers/typeof.js","webpack:///./node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/core-js/library/modules/_library.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/_cof.js","webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.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/_validate-collection.js","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/core-js/library/modules/_an-instance.js","webpack:///./node_modules/core-js/library/modules/_redefine-all.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/underscore/modules/matcher.js","webpack:///./node_modules/underscore/modules/partial.js","webpack:///./node_modules/underscore/modules/_group.js","webpack:///./node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/babel-runtime/core-js/object/define-property.js","webpack:///./src/utils/ajax.js","webpack:///./node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/core-js/library/modules/_object-gopd.js","webpack:///path (ignored)","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/isObjectLike.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/_iter-define.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/_redefine.js","webpack:///./node_modules/core-js/library/modules/_iobject.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/core.get-iterator-method.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/babel-runtime/core-js/object/keys.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-gopn.js","webpack:///./node_modules/babel-runtime/core-js/object/create.js","webpack:///./node_modules/leancloud-realtime/core.js","webpack:///./node_modules/core-js/library/modules/_array-methods.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.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/_iter-step.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/_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:///./node_modules/core-js/library/modules/_set-species.js","webpack:///./node_modules/core-js/library/modules/_iter-detect.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/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/babel-runtime/core-js/symbol.js","webpack:///./node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/promise-timeout/index.js","webpack:///./node_modules/babel-runtime/core-js/get-iterator.js","webpack:///./node_modules/charenc/charenc.js","webpack:///./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","webpack:///./node_modules/babel-runtime/core-js/is-iterable.js","webpack:///./node_modules/babel-runtime/core-js/set.js","webpack:///./node_modules/core-js/library/modules/_collection.js","webpack:///./node_modules/core-js/library/modules/_set-collection-of.js","webpack:///./node_modules/core-js/library/modules/_set-collection-from.js","webpack:///./node_modules/core-js/library/modules/_object-assign.js","webpack:///./node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/babel-runtime/core-js/object/get-own-property-symbols.js","webpack:///./node_modules/babel-runtime/core-js/object/assign.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/lodash/_shuffleSelf.js","webpack:///./node_modules/lodash/values.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/isArray.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./src/entry/core-live-query.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/_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/es6.promise.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/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/core-js/library/fn/symbol/index.js","webpack:///./node_modules/core-js/library/modules/_enum-keys.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:///./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/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/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/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","webpack:///./src/entry/use-live-query.js","webpack:///./node_modules/leancloud-realtime/dist/core.js","webpack:///./node_modules/core-js/library/fn/set.js","webpack:///./node_modules/core-js/library/modules/es6.set.js","webpack:///./node_modules/core-js/library/modules/_collection-strong.js","webpack:///./node_modules/core-js/library/modules/_array-species-create.js","webpack:///./node_modules/core-js/library/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/library/modules/es7.set.to-json.js","webpack:///./node_modules/core-js/library/modules/_collection-to-json.js","webpack:///./node_modules/core-js/library/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/library/modules/es7.set.of.js","webpack:///./node_modules/core-js/library/modules/es7.set.from.js","webpack:///./node_modules/babel-runtime/core-js/weak-map.js","webpack:///./node_modules/core-js/library/fn/weak-map.js","webpack:///./node_modules/core-js/library/modules/es6.weak-map.js","webpack:///./node_modules/core-js/library/modules/_collection-weak.js","webpack:///./node_modules/core-js/library/modules/es7.weak-map.of.js","webpack:///./node_modules/core-js/library/modules/es7.weak-map.from.js","webpack:///./node_modules/babel-runtime/core-js/object/define-properties.js","webpack:///./node_modules/core-js/library/fn/object/define-properties.js","webpack:///./node_modules/core-js/library/modules/es6.object.define-properties.js","webpack:///./node_modules/babel-runtime/core-js/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js/library/fn/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/library/modules/_own-keys.js","webpack:///./node_modules/core-js/library/fn/object/get-own-property-symbols.js","webpack:///./node_modules/core-js/library/fn/object/assign.js","webpack:///./node_modules/core-js/library/modules/es6.object.assign.js","webpack:///./node_modules/babel-runtime/core-js/object/freeze.js","webpack:///./node_modules/core-js/library/fn/object/freeze.js","webpack:///./node_modules/core-js/library/modules/es6.object.freeze.js","webpack:///./node_modules/protobufjs/dist/protobuf-light.js","webpack:///./node_modules/bytebuffer/dist/bytebuffer.js","webpack:///./node_modules/long/dist/long.js","webpack:///fs (ignored)","webpack:///./node_modules/leancloud-realtime/node_modules/eventemitter3/index.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/lodash/shuffle.js","webpack:///./node_modules/lodash/_arrayShuffle.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_baseRandom.js","webpack:///./node_modules/lodash/_baseShuffle.js","webpack:///./node_modules/lodash/_baseValues.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/@babel/runtime/helpers/toArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js","webpack:///./node_modules/javascript-state-machine/state-machine.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/leancloud-realtime-plugin-live-query/dist/live-query.js","webpack:///./node_modules/babel-runtime/core-js/array/from.js","webpack:///./node_modules/core-js/library/fn/array/from.js","webpack:///./node_modules/core-js/library/modules/es6.array.from.js"],"names":["_","require","md5","extend","AV","getSessionToken","ajax","sign","key","isMasterKey","now","Date","getTime","signature","setAppKey","headers","signKey","applicationKey","setHeaders","authOptions","applicationId","useMasterKey","_config","masterKey","console","warn","hookKey","production","String","_sharedConfig","userAgent","resolve","then","sessionToken","disableCurrentUser","User","currentAsync","currentUser","_sessionToken","createApiUrl","service","version","path","apiURL","serverURLs","Error","charAt","length","request","method","query","data","_appRouter","refresh","timeout","requestTimeout","url","catch","errorJSON","code","error","message","responseText","response","JSON","parse","e","rawMessage","keepErrorRawMessage","statusCode","err","_request","route","className","objectId","_fetchWhenSave","_where","toLowerCase","module","exports","isNullOrUndefined","isNull","x","isUndefined","ensureArray","isArray","target","undefined","transformFetchOptions","keys","include","includeACL","fetchOptions","join","returnACL","user","tap","interceptor","value","EmptyConstructor","inherits","parent","protoProps","staticProps","child","hasOwnProperty","constructor","apply","arguments","prototype","__super__","parseDate","iso8601","setValue","segs","split","lastSeg","pop","currentTarget","forEach","seg","findValue","firstSeg","i","isPlainObject","isObject","obj","Object","continueWhile","predicate","asyncFunction","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","uuid","debug","setAdapters","adapterManager","global","realtime","initialUserAgent","liveQueryRealtime","on","ua","platformInfo","comments","name","extra","_getAVPath","isString","substring","_installationId","_getInstallationId","localStorage","getItemAsync","setItemAsync","_subscriptionId","_refreshSubscriptionId","subscriptionId","_getSubscriptionId","_parseDate","_extend","classProps","_encode","seenObjects","disallowObjects","full","_hasData","_toPointer","_toFullJSON","concat","ACL","toJSON","isDate","__type","iso","GeoPoint","map","isRegExp","source","Relation","Op","File","id","mapObject","v","k","_decode","__op","pointer","_create","clone","_finishFetch","object","latitude","longitude","relation","targetClassName","file","parseJSON","text","stringify","_encodeObjectOrArray","encodeAVObject","_arrayEach","each","_traverse","func","seen","indexOf","push","attributes","index","newChild","_each","_objectEach","callback","enable","namespaces","disable","EventEmitter","AdapterManager","_adapters","getAdapter","adapter","newAdapters","emit","bind","debugRequest","debugRequestError","requestsCount","time","onprogress","queryString","encodeURIComponent","filter","qs","count","promise","status","header","ok","enabled","syncApiNames","async","apiName","storage","removeAsync","removeItemAsync","getCacheData","cacheData","expired","expiredAt","getAsync","cache","setAsync","ttl","useLiveQuery","Promise","Cache","Conversation","AppRouter","isEmpty","isCNApp","appId","slice","fillServerURLs","stats","engine","api","rtm","getDefaultServerURLs","domain","_disableAppRouter","_initialized","init","options","appKey","serverURL","TypeError","setProduction","disableAppRouter","_setServerURLs","server","RTMRouter","Cloud","urls","setServerURL","setServerURLs","setRequestTimeout","ms","initialize","defineConfig","property","get","set","lockedUntil","disabled","lock","servers","protocal","push_server","stats_server","engine_server","api_server","eventSplitter","Array","Events","events","context","calls","event","node","tail","list","_callbacks","shift","next","off","cb","ctx","trigger","args","all","rest","call","unbind","arg1","arg2","_validate","isNumber","self","__defineGetter__","__defineSetter__","_latitude","_longitude","val","current","reject","navigator","geolocation","getCurrentPosition","location","coords","radiansTo","point","d2r","Math","PI","lat1rad","long1rad","lat2rad","long2rad","deltaLat","deltaLong","sinDeltaLatDiv2","sin","sinDeltaLongDiv2","a","cos","min","asin","sqrt","kilometersTo","milesTo","PUBLIC_KEY","permissionsById","setReadAccess","setWriteAccess","isFunction","accessList","userId","allowed","permission","isBoolean","_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","previous","_estimate","oldValue","_UNSET","Unset","Increment","amount","_amount","BitAnd","BitOr","BitXor","Add","objects","_objects","AddUnique","uniq","newValue","matchingObj","find","anObj","contains","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","match","b64Digit","number","fromCharCode","encodeBase64","array","chunks","ceil","times","b1","b2","b3","has2","has3","mimeType","metaData","base64","size","_extName","_data","_uploadHeaders","blob","uri","Blob","owner","withURL","type","prop","__source","createWithoutData","_operations","has","toFullJSON","holder","getACL","_acl","setACL","acl","attrName","setUploadHeader","attr","thumbnailURL","width","height","quality","scaleToFit","fmt","mode","ownerId","destroy","_fileToken","extName","keep_file_name","keepFileName","mime_type","save","_previousSave","uploadInfo","_token","token","_options","direction","provider","_callback","success","result","fetch","bucket","saveOptions","upload_url","fileFormData","field","upload","_bucket","btoa","SHARD_THRESHOLD","CHUNK_SIZE","uptoken","urlSafeBase64","string","unescape","ch","ShardUploader","offset","uploadedChunks","uploadURL","baseURL","upToken","uploaded","onProgress","loaded","total","percent","Authorization","res","uploadId","partNumber","etag","parts","getUploadId","uploadPart","getChunk","chunk","part","stopUpload","fname","BlobUploader","isBlob","b64","charCodeAt","b","c","bitmap","dataURItoBlob","dataURI","byteString","atob","ia","Uint8Array","recursiveToPointer","RESERVED_KEYS","checkReservedKey","handleBatchResults","firstError","results","getValue","_mergeMagicFields","defaults","collection","_serverData","_opSetQueue","_flags","_hashedJSON","_escapedAttributes","cid","uniqueId","changed","_silent","_pending","silent","_previousAttributes","saveAll","_deepSaveAsync","fetchAll","requests","dirty","fetchedAttrs","_cleanupUnsetKeys","fetchWhenSave","getObjectId","getCreatedAt","createdAt","getUpdatedAt","updatedAt","newSeenObjects","_refreshCache","_refreshingCache","_resetCacheForKey","currentChanges","last","dirtyKeys","escape","html","escaped","toString","attrs","model","specialFields","_startSave","_cancelSave","failedChanges","first","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","isEqual","increment","item","addUnique","bitAnd","bitOr","bitXor","clear","keysToClear","revert","lastOp","_keys","_getSaveJSON","_canBeSerialized","_canBeSerializedAsValue","fetchedKeys","arg3","wait","setOptions","unsavedChildren","unsavedFiles","_findUnsavedChildren","_allPreviousSaves","_failOnNotExist","failOnNotExist","queryParams","_getParams","where","makeRequest","_makeRequest","requestPromise","resp","serverAttrs","triggerDestroy","output","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","toArray","defineProperty","_LCClassName","register","children","files","canBeSerializedAsValue","remaining","batch","newRemaining","readyToStart","bathSavePromise","params","setName","getUsers","getRoles","newName","test","PLATFORM_ANONYMOUS","PLATFORM_QQAPP","mergeUnionDataIntoAuthData","defaultUnionIdPlatform","authData","unionId","unionIdPlatform","asMainAccount","platform","unionid","main_account","Boolean","_isCurrentUser","_cleanupAuthData","isCurrent","_synchronizeAllAuthData","_synchronizeAuthData","authType","_authProviders","getAuthType","restoreAuthentication","dissociateAuthData","_handleSaveResult","makeCurrent","password","_saveCurrentUser","_linkWith","authenticate","associateWithAuthData","associateWithAuthDataAndUnionId","unionOptions","associateWithMiniApp","authInfo","option","getAuthInfo","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","getItem","_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","done","n","sizeEqualTo","notEqualTo","lessThan","greaterThan","lessThanOrEqualTo","greaterThanOrEqualTo","containedIn","values","notContainedIn","containsAll","exists","doesNotExist","matches","regex","modifiers","ignoreCase","multiline","matchesQuery","doesNotMatchQuery","matchesKeyInQuery","queryKey","doesNotMatchKeyInQuery","$or","$and","_quote","s","replace","startsWith","endsWith","ascending","addAscending","descending","addDescending","near","withinRadians","distance","withinMiles","withinKilometers","withinGeoBox","southwest","northeast","$box","finished","callbacksDone","subscribe","LiveQuery","UserClass","requireRealtime","client","_client","_queryJSON","_onMessage","_dispatch","_onReconnect","queryId","query_id","updatedKeys","unsubscribe","deregister","userDefinedSubscriptionId","createLiveQueryClient","liveQueryClient","finally","pause","resume","Captcha","_authOptions","captchaToken","_requestCaptcha","verify","verifyCaptcha","textInput","image","verifyButton","document","getElementById","__refresh","src","focus","__image","addEventListener","__verify","__verifyButton","removeEventListener","captcha","run","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","toObject","_getDataJSON","sendStatusToFollowers","messageId","sendPrivateStatus","countUnreadStatuses","resetUnreadCount","statusQuery","InboxQuery","_objectClass","_sinceId","_maxId","_inboxType","_owner","sinceId","maxId","inboxQuery","SearchSortBuilder","_sortFields","_addField","missing","whereNear","geo","lat","lon","m","unit","build","SearchQuery","_sid","_hits","_queryString","_highlights","_sortBuilder","_clazz","sid","highlights","sortBy","builder","hits","hasMore","_hitEnd","reset","_oldSid","appURL","clazz","sort","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","LeaderboardVersionChangeInterval","NEVER","DAY","WEEK","MONTH","LeaderboardOrder","ASCENDING","DESCENDING","LeaderboardUpdateStrategy","BETTER","LAST","SUM","Statistic","parseStatisticData","statisticData","statisticName","statisticValue","Leaderboard","updateStrategy","versionChangeInterval","nextResetAt","createLeaderboard","leaderboard","getLeaderboard","getStatistics","statisticNames","statistics","updateStatistics","overwrite","deleteStatistics","_getResults","selectUserKeys","includeUserKeys","includeStatistics","includeUser","rankings","rankingData","rank","includedStatistics","getResults","getResultsAroundUser","_update","updateVersionChangeInterval","updateUpdateStrategy","getArchives","activatedAt","deactivatedAt","Realtime","setRTMAdapters","LiveQueryPlugin","__preRegisteredPlugins","adapters","_interopDefault","ex","protobufLight","_regeneratorRuntime","_asyncToGenerator","_toConsumableArray","_defineProperty","_objectWithoutProperties","_assertThisInitialized","_inheritsLoose","d","shuffle","_toArray","_createClass","_applyDecoratedDescriptor","StateMachine","_typeof","promiseTimeout","messageCompiled","newBuilder","syntax","objc_class_prefix","messages","fields","rule","enums","isNamespace","_messages$push_server","messages2","JsonObjectMessage","UnreadTuple","LogItem","DataCommand","SessionCommand","ErrorCommand","DirectCommand","AckCommand","UnreadCommand","ConvCommand","RoomCommand","LogsCommand","RcpCommand","ReadTuple","MaxReadTuple","ReadCommand","PresenceCommand","ReportCommand","GenericCommand","BlacklistCommand","PatchCommand","PatchItem","ConvMemberInfo","CommandType","OpType","StatusType","__proto__","global$1","window","EXPIRED","Expirable","originalValue","debug$1","_map","_proto","ownKeys","enumerableOnly","symbols","sym","enumerable","_objectSpread","debug$2","tryAll","promiseConstructors","isIE10","internal","compact","removeNull","trim","isWeapp","wx","connectSocket","equalBuffer","buffer1","buffer2","byteLength","some","_class","ownKeys$1","_objectSpread$1","debug$3","OPEN","DISCONNECT","RECONNECT","RETRY","SCHEDULE","OFFLINE","ONLINE","ERROR","MESSAGE","HEARTBEAT_TIME","TIMEOUT_TIME","DEFAULT_RETRY_STRATEGY","attempt","pow","requireConnected","descriptor","requireConnectedWrapper","_descriptor$value","checkConnectionAvailability","_len","_key","WebSocketPlus","_EventEmitter","_urls","getUrls","protocol","_this","_protocol","_open","__postponeTimeoutTimer","_postponeTimeoutTimer","__pause","can","__resume","open","_this2","_createWs","ws","_this2$_urls","_this3","WebSocket","binaryType","onopen","onclose","onerror","_ws","_handleClose","onmessage","_handleMessage","_destroyWs","close","onbeforeevent","from","to","_len2","payload","_key2","onconnected","_startConnectionKeeper","onleaveconnected","_stopConnectionKeeper","onpause","onbeforeresume","onreconnect","ondisconnected","_this4","delay","__scheduledRetry","clearTimeout","setTimeout","is","retry","onretry","_this5","reconnect","fail","currentState","_ping","ping","_this6","_clearTimeoutTimers","_timeoutTimer","disconnect","_heartbeatTimer","setInterval","addListener","removeListener","clearInterval","reason","isFinished","handleClose","handleMessage","create","initial","state","defer","terminal","ErrorCode","reduce","Number","createError","_ref","appCode","detail","errorMessage","debug$4","COMMAND_TIMEOUT","EXPIRE","isIdempotentCommand","command","cmd","direct","session","conv","start","update","members","Connection","_WebSocketPlus","getUrl","format","protocolString","_protocolFormat","_commands","_serialId","_send","mark","_callee","waitingForRespond","buffer","serialId","duplicatedCommand","_args","wrap","_callee$","_context","prev","toArrayBuffer","_ref2","targetBuffer","targetCommand","abrupt","toBase64","stop","_x","msg","decode","goaway","echo","debug$5","_ref$method","_url","applyDecorators","decorators","decorator","_pluginName","applyDispatcher","dispatchers","resultPromise","dispatcher","shouldDispatch","ownKeys$2","_objectSpread$2","debug$6","routerCache","initializedApp","plugins","pushOfflineMessages","noBinary","ssl","RTMServerName","process","env","RTM_SERVER_NAME","_cache","clients","pendingClients","mergedPlugins","plugin","_plugins","hook","onRealtimeCreate","_request2","_ref2$version","_this$_options","_yield$this$construct","_getServerUrls","sent","_openPromise","connection","_getRTMServers","_callee2","_callee2$","_context2","_dispatchCommand","isFatal","APP_NOT_AVAILABLE","INVALID_LOGIN","INVALID_ORIGIN","errorCode","_getRTMServers2","_callee3","info","cachedEndPoints","_info","secondary","_callee3$","_context3","RTMServers","_fetchRTMServers","_x2","_getServerUrls2","_callee4","_ref4","cachedRouter","defaultProtocol","_callee4$","_context4","_ref5","RTMRouterServer","rtm_router_server","APIServer","_ref5$ttl","serverUrls","_x3","_ref6","_ref7","secure","features","_t","_close","_internal","cannot","_internal2","_internal3","_registerPending","_deregisterPending","_register","_deregister","beforeCommandDispatch","polyfilledPromise","Protocals","Protocols","prefix","EE","fn","once","emitter","listener","evt","_events","_eventsCount","clearEvent","eventNames","names","listeners","handlers","l","ee","listenerCount","a1","a2","a3","a4","a5","len","j","removeAllListeners","prefixed","factory","define","core","subClass","superClass","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arr2","iter","LiveQueryClient","_appId","_connection","_eventemitter","_querys","_this$_connection","installationId","login","_ee","logout","liveQuery","delete","_dispatchDataCommand","_ref$dataMessage","dataMessage","ack","ackMessage","finalize","_liveQueryClients","_realtime$_open$then","isLiveQueryCommand","targetClient"],"mappings":"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A;;;;;;;ACHA;AACA,cAAc,mBAAO,CAAC,EAAY;AAClC,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;;ACLA;AAAA;AAA6C;;AAE7C;AACe;AACf,wBAAwB,iEAAc;AACtC;;;;;;;ACLA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;ACNA;AACA,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;;ACJA;AAAA;AACe;AACf;AACA;AACA;;;;;;;;ACJA;AAAA;AAA4C;AACJ;;AAExC;AACA;AACe,yHAAa,IAAI,sEAAS,SAAS,EAAC;;;;;;;;ACLnD;AAAA;AAAA;AAAA;AAA0C;AACE;AACf;;AAE7B;AACA;AACA;AACA;AACe;AACf,aAAa,uEAAU;AACvB;AACA,MAAM,wEAAW;AACjB,oCAAoC,YAAY;AAChD;AACA;AACA,GAAG;AACH,gBAAgB,iEAAI;AACpB,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;;;;;;;ACtBa;;AAEb,uBAAuB,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAE7V;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG,gBAAgB;AACnB;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;;;;ACfA,e;;;;;;ACAA,aAAa,mBAAO,CAAC,GAAW;AAChC,gBAAgB,mBAAO,CAAC,GAAc;AACtC,qBAAqB,mBAAO,CAAC,GAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;AACA;;;;;;;;ACJa;AACb,cAAc,mBAAO,CAAC,EAAY;AAClC,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAa;AACpC,WAAW,mBAAO,CAAC,EAAS;AAC5B,gBAAgB,mBAAO,CAAC,EAAc;AACtC,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,qBAAqB,mBAAO,CAAC,EAAsB;AACnD,qBAAqB,mBAAO,CAAC,GAAe;AAC5C,eAAe,mBAAO,CAAC,CAAQ;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E,6CAA6C,oCAAoC;AACjF,KAAK,4BAA4B,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;ACpEA,eAAe,mBAAO,CAAC,CAAc;AACrC,eAAe,mBAAO,CAAC,CAAW;AAClC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ACA;AACA;AACoD;AACA;AACR;AACI;AACI;AACI;AAEN;AACJ;AACE;AACN;AACM;AACI;AACgB;AAChB;AACJ;AACI;AACN;AACM;;AAEpD;AACA;AACA;AACA;AACkD;AACN;AACM;AACA;AACJ;AACA;AACM;AACA;AACR;AACI;AACE;AACJ;AACE;AACJ;;AAE5C;AACA;AACA;AACA;AACkD;AACI;AACQ;AACJ;AACR;AACQ;AAEZ;AACQ;;AAEtD;AACA;AACA;AACA;AAE+C;AAED;AAGE;AAEU;AAEV;AACA;AAEF;AAEF;AAGQ;AACJ;AACF;AACA;AACJ;AACA;AACQ;AACF;AACA;AACE;AACA;AACA;AACI;AACJ;AACN;;AAE5C;AACA;AACA;AAC4C;AACA;;AAE5C;AACA;AACA;AACA;AAG8C;AACI;AACN;AAGA;AACM;AACA;AACA;AAEJ;AACA;AACc;AACJ;AAEN;AACR;AACM;AACF;AACA;;AAE9C;AACA;AACA;AACA;AAC8C;AACU;;;;;;;;ACvMxD;AAAwC;;AAEzB,+HAAS,UAAU,EAAC;;;;;;;;ACFnC;AAAA;AAAA;AAAA;AAAwC;AACC;AACM;AACM;;AAErD,iBAAiB,sEAAS;;AAE1B;AACA;AACA;AACA,wBAAwB,uEAAU,iBAAiB,0EAAa;AAChE;;AAEgB,kIAAe,8BAA8B,EAAE;;;;;;;;ACb/D;AAAA;AAAwC;AACZ;;AAE5B,kBAAkB,sEAAS;;AAE3B;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAG;AAChB;AACA;AACA,CAAC;;AAEc,oEAAW,EAAC;;;;;;;;ACf3B;AAAoD;;AAEpD;AACe,qIAAe,cAAc,EAAC;;;;;;;;ACH7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACC;AACN;;AAEnC;AACA;AACA;AACA;AACO;AACP,eAAe,sEAAS;AACxB;AACA;AACA;AACA,eAAe,oEAAO;AACtB,QAAQ,sEAAS;AACjB,mBAAmB,YAAY;AAC/B,WAAW,uEAAU;AACrB;AACA;AACA;AACA;AACA,0CAA0C,uEAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA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AAC,EAAe;AACvC,cAAc,mBAAO,CAAC,CAAQ;AAC9B;AACA;AACA;AACA;AACA;;;;;;;ACRA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,aAAa,mBAAO,CAAC,GAAW;AAChC,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,EAAe;AACjC,aAAa,mBAAO,CAAC,CAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAO,CAAC,EAAQ;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnFA;AACA;AACA,YAAY;AACZ,GAAG;AACH,YAAY;AACZ;AACA;;;;;;;ACNA,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,CAAc;AACrC,2BAA2B,mBAAO,CAAC,EAA2B;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb,aAAa,mBAAO,CAAC,CAAW;AAChC,WAAW,mBAAO,CAAC,CAAS;AAC5B,SAAS,mBAAO,CAAC,EAAc;AAC/B,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,CAAQ;;AAE9B;AACA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC,GAAG;AACH;;;;;;;ACbA,eAAe,mBAAO,CAAC,CAAQ;AAC/B;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBA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A;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0DAA0D,OAAO;AACjE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,SAAS;AAClD;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA,eAAe,YAAY;AAC3B;;AAEA;AACA,2DAA2D;AAC3D,+DAA+D;AAC/D,mEAAmE;AACnE,uEAAuE;AACvE;AACA,0DAA0D,SAAS;AACnE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,gCAAgC;AAChG;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,mBAAO,CAAC,GAAgB;AAC1B,EAAE,mBAAO,CAAC,EAAe;AACzB;;AAEA,sBAAsB,mBAAO,CAAC,EAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0DAA0D,kBAAkB;;AAE5E;AACA;AACA;AACA,oBAAoB,uBAAuB;;AAE3C,oDAAoD,6BAA6B;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,eAAe,EAAE;AAC3C,0BAA0B,gBAAgB;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,8CAA8C,YAAY,EAAE;;AAE5D;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO,QAAQ,iCAAiC;AACpG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,oCAAoC,mBAAO,CAAC,EAAS;AACrD;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrPA;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;;;;;;;;ACJA;AACa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,mBAAmB;AAChD;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AAC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;;;;;AC3BA,iBAAiB,mBAAO,CAAC,GAAe;AACxC,WAAW,mBAAO,CAAC,GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjCA,WAAW,mBAAO,CAAC,GAAS;;AAE5B;AACA;;AAEA;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;ACRA;AACA;;AAEA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACdA,IAAM1S,KAAKH,mBAAOA,CAAC,GAAR,CAAX;AACA,IAAMgT,eAAehT,mBAAOA,CAAC,GAAR,CAArB;;AAEA6E,OAAOC,OAAP,GAAiBkO,aAAa7S,EAAb,CAAjB,C;;;;;;;;;ACHA0E,OAAOC,OAAP,GAAiB9E,mBAAOA,CAAC,GAAR,CAAjB,C;;;;;;;;;;;;;;;ACAA;;;;;;;AAOA,IAAMD,IAAIC,mB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AAC,CAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,YAAY,mBAAO,CAAC,EAAW;AAC/B,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,WAAW,mBAAO,CAAC,GAAS;AAC5B,gBAAgB,mBAAO,CAAC,GAAc;AACtC,iCAAiC,mBAAO,CAAC,EAA2B;AACpE,cAAc,mBAAO,CAAC,GAAY;AAClC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,qBAAqB,mBAAO,CAAC,GAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,EAAE,mBAAO,CAAC,CAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,kCAAkC;AACrD,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,eAAe,uCAAuC;AACtD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,yBAAyB,KAAK;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,wBAAwB;AACxB,gBAAgB;AAChB,oBAAoB;AACpB,wBAAwB;AACxB,gBAAgB;AAChB,oBAAoB;AACpB;AACA,uBAAuB,mBAAO,CAAC,EAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAA0D,oBAAoB;AAC9E,mBAAO,CAAC,EAAsB;AAC9B,mBAAO,CAAC,GAAgB;AACxB,UAAU,mBAAO,CAAC,CAAS;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gDAAgD,mBAAO,CAAC,GAAgB;AACxE;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;AC7RD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACfA,aAAa,mBAAO,CAAC,CAAW;AAChC,gBAAgB,mBAAO,CAAC,GAAS;AACjC;AACA;AACA;AACA,aAAa,mBAAO,CAAC,EAAQ;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uCAAuC,sBAAsB,EAAE;AAC/D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;ACpEA,aAAa,mBAAO,CAAC,CAAW;AAChC;;AAEA;;;;;;;;ACHA;AACa;AACb,cAAc,mBAAO,CAAC,CAAW;AACjC,WAAW,mBAAO,CAAC,CAAS;AAC5B,aAAa,mBAAO,CAAC,CAAW;AAChC,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,qBAAqB,mBAAO,CAAC,GAAoB;;AAEjD,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,8DAA8D,UAAU,EAAE;AAC1E,KAAK;AACL;AACA,8DAA8D,SAAS,EAAE;AACzE,KAAK;AACL;AACA,CAAC,EAAE;;;;;;;;ACnBU;AACb;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,2BAA2B,mBAAO,CAAC,EAA2B;AAC9D,cAAc,mBAAO,CAAC,GAAY;;AAElC,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,CAAC,EAAE;;;;;;;;ACXH;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,IAAI;AAC3C;AACA;AACA;AACA;AACyC;AACN;;AAEnC;AACA,QAAQ,wDAAK,CAAC,uCAAU;AACxB;AACA;AACA;AACe,0DAAC,EAAC;;;;;;;;AC1BjB;AAAA;AACe;AACf;AACA;;;;;;;;ACHA;AAAA;AACe;AACf;AACA;;;;;;;;ACHA;AAAwC;;AAEzB,+HAAS,QAAQ,EAAC;;;;;;;;ACFjC;AAAwC;;AAEzB,+HAAS,UAAU,EAAC;;;;;;;;ACFnC;AAAwC;;AAEzB,+HAAS,SAAS,EAAC;;;;;;;;ACFlC;AAAwC;;AAEzB,+HAAS,UAAU,EAAC;;;;;;;;ACFnC;AAAA;AAAA;AAAwC;AACH;;AAErC;AACe;AACf,UAAU,qEAAQ,SAAS,oEAAS;AACpC;;;;;;;;ACNA;AAAA;AAAoE;AACpB;;AAEhD;AACA;AACe,6IAAuB,CAAC,kEAAa,CAAC,EAAC;;;;;;;;ACLtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACL;AACE;AACM;AACd;;AAE7B;AACA;AACe;AACf;AACA;AACA;AACA,eAAe,sEAAS;AACxB;AACA,IAAI,oEAAO,SAAS,qEAAQ,SAAS,wEAAW;AAChD;AACA,SAAS,sEAAS,CAAC,iEAAI;AACvB;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgC;AACoB;AACJ;AACH;AACJ;AACa;AACb;AACZ;AACD;AACkB;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,+DAAC;AACpB,mBAAmB,+DAAC;AACpB;AACA,kBAAkB,2DAAQ;AAC1B,oBAAoB,2DAAQ;AAC5B;AACA,MAAM,yEAAe,sCAAsC,uEAAU;AACrE,SAAS,uEAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAW,qBAAqB,8DAAW;AACxD;AACA;AACA;AACA,oBAAoB,yEAAY,KAAK,yEAAY;AACjD;;AAEA;AACA,oBAAoB,yEAAY;AAChC,uBAAuB,0EAAa;AACpC,yBAAyB,0EAAa;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,uEAAU;AACvC,6BAA6B,uEAAU;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gBAAgB,iEAAI;AACpB;AACA;AACA,QAAQ,iEAAI;AACZ;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;AACA;AACA,CAAC,CAAC,EAAC;;;;;;;;AChBH;AAAA;AAA4B;;AAE5B;AACe;AACf;AACA;AACA;AACA,SAAS,gEAAG;AACZ;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AAAA;AAAA;AAAmC;AACJ;AACC;;AAEhC;AACA;AACe,6HAAO,CAAC,0DAAK,EAAE,+DAAC,IAAI,EAAC;;;;;;;;ACNpC;AAAA;AAA2B;;AAE3B;AACA;AACA;AACA;AACA,KAAK,eAAe;AACL;AACf;AACA;AACA;;AAEA;AACA,+CAA+C,gEAAG;AAClD;AACA;AACA;AACA;;AAEA;AACA,eAAe,gEAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;AC9CA;AAAA;AAAA;AAA+C;AACpB;;AAE3B;AACA;AACA;AACA;AACe;AACf;;AAEA;AACA,iBAAiB,gEAAG;AACpB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,0EAAa;AAC/B;AACA;AACA,eAAe,gEAAG;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;ACvCA;AAAA;AAAmC;;AAEnC;AACA;AACA;AACe;AACf,SAAS,oEAAO;AAChB;;;;;;;;ACPA;AAAA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AAAA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AAAA;AAAmC;AACF;;AAEjC;AACA;AACe,6HAAO,CAAC,2DAAM,IAAI,EAAC;;;;;;;;ACLlC;AAAA;AAA+C;AACS;;AAExD;AACA;AACe,uIAAiB,KAAK,kEAAa,CAAC,EAAC;;;;;;;;ACLpD;AAAA;AAAA;AAA6B;AACM;;AAEnC;AACA;AACe;AACf,SAAS,iEAAI,MAAM,oEAAO;AAC1B;;;;;;;;ACPA;AAA8C;;AAE9C;AACA;AACe,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H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wEAAW;AACtB;AACA,CAAC;;AAED;AACA,iEAAI;AACJ,eAAe,6DAAU;AACzB,EAAE,+DAAC;AACH;AACA;AACA,WAAW,wEAAW;AACtB;AACA,CAAC;;AAEc,wHAAC,EAAC;;;;;;;AC9BjB,WAAW,mBAAO,CAAC,CAAqB;AACxC,uCAAuC,4BAA4B;AACnE,yCAAyC;AACzC;AACA;;;;;;;ACJA,mBAAO,CAAC,GAA+B;AACvC,iBAAiB,mBAAO,CAAC,CAAqB;;;;;;;ACD9C;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,YAAY,mBAAO,CAAC,EAAgB;;AAEpC,mBAAO,CAAC,EAAe;AACvB;AACA;AACA;AACA,CAAC;;;;;;;ACRD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACvBa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAO,CAAC,GAAI;AACrC;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,cAAc;AAC3B;AACA;;AAEA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yEAAyE,aAAa;AACtF;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;;AAEA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,eAAe,kCAAkC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;;AAEA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;ACvPA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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L,GAAehB,WAAWU,MAA1B;AACA1U,SAAKf,EAAL,GAAU+U,WAAW5e,QAArB;AACA,WAAO4K,IAAP;AACD,GAjBM,CAAP;AAkBD,CApBD,C;;;;;;ACHA;AACA,cAAc,mBAAO,CAAC,GAAO;AAC7B,aAAa,mBAAO,CAAC,GAAS;AAC9B,iBAAiB,mBAAO,CAAC,GAAW;AACpC,YAAY,mBAAO,CAAC,GAAS;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;AC/JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;A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AAiB,mBAAO,CAAC,CAAkB;;;;;;;;ACP9B;AACb,aAAa,mBAAO,CAAC,GAAsB;AAC3C,eAAe,mBAAO,CAAC,EAAwB;AAC/C;;AAEA;AACA,iBAAiB,mBAAO,CAAC,GAAe;AACxC,yBAAyB,mEAAmE;AAC5F,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACbY;AACb,SAAS,mBAAO,CAAC,EAAc;AAC/B,aAAa,mBAAO,CAAC,EAAkB;AACvC,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,UAAU,mBAAO,CAAC,EAAQ;AAC1B,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,YAAY,mBAAO,CAAC,EAAW;AAC/B,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,WAAW,mBAAO,CAAC,GAAc;AACjC,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAS;AAC/B,eAAe,mBAAO,CAAC,EAAwB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,6BAA6B;AAC7B,0BAA0B;AAC1B,0BAA0B;AAC1B,qBAAqB;AACrB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8EAA8E,OAAO;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;A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A;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,iBAAiB,gDAAgD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,yBAAyB,gDAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,6BAA6B,4BAA4B;AACzD,6BAA6B,2CAA2C;AACxE,6BAA6B,2CAA2C;AACxE,6BAA6B;AAC7B;AACA,uBAAuB,gBAAgB;AACvC;AACA,yBAAyB,0BAA0B;AACnD,qBAAqB,6BAA6B;AAClD,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,mBAAmB;AACtC;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAO,CAAC,GAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,qBAAqB,EAAE,EAAE;;AAEzB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,oBAAoB;AACvC,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,4BAA4B;AAC/C,mBAAmB,OAAO;AAC1B,mBAAmB,mBAAmB;AACtC,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,oBAAoB;AACvC,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,cAAc;AACjC,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,SAAS;AAC5B,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,iBAAiB;AACjB;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,mBAAmB,oBAAoB;AACvC,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,gCAAgC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,KAAK;AACxD;AACA;AACA;AACA;AACA;AACA,uDAAuD,2BAA2B;AAClF;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,wBAAwB;AACxB;AACA,wCAAwC,KAAK;AAC7C;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B,oBAAoB,oBAAoB,KAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA,oBAAoB,gCAAgC;AACpD,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,QAAQ;AAC3B;AACA,mBAAmB,OAAO;AAC1B;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wBAAwB,QAAQ,gCAAgC;AAChE,qBAAqB,EAAE;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,QAAQ,gCAAgC;AAChE,qBAAqB,EAAE;AACvB;AACA;;AAEA;AACA;AACA,oBAAoB,6CAA6C,eAAe;AAChF,mBAAmB,SAAS;AAC5B;AACA,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,oBAAoB,EAAE;AACtB,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,EAAE;AACrB,qBAAqB,OAAO;AAC5B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,EAAE;AACrB,mBAAmB,WAAW;AAC9B,oBAAoB,WAAW;AAC/B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA,sDAAsD;AACtD;;AAEA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,WAAW;AAC9B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,oBAAoB,EAAE;AACtB,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,qBAAqB,EAAE;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,4BAA4B;AAC/C,mBAAmB,OAAO;AAC1B,mBAAmB,mBAAmB;AACtC,mBAAmB,SAAS;AAC5B,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,oBAAoB,yBAAyB;AAC7C,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD,2BAA2B,UAAU;AACrC;AACA,4BAA4B,MAAM;AAClC;AACA;AACA;;AAEA;AACA,kDAAkD,KAAK;AACvD;AACA;AACA,8CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yDAAyD,KAAK;AAC9D;AACA,qEAAqE;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,2BAA2B,EAAE;AAC7B,2BAA2B,SAAS;AACpC,6BAA6B,0BAA0B;AACvD,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2EAA2E,mCAAmC;AAC9G;AACA;AACA,2BAA2B,OAAO;AAClC,2BAA2B,EAAE;AAC7B,2BAA2B,SAAS;AACpC,6BAA6B,0BAA0B;AACvD,4BAA4B,MAAM;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD,2BAA2B,aAAa;AACxC,2BAA2B,SAAS;AACpC,6BAA6B,0BAA0B;AACvD,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E,qBAAqB;AACrB;AACA,+CAA+C;AAC/C,kEAAkE;AAClE;AACA;AACA,0DAA0D;AAC1D,gEAAgE;AAChE,yBAAyB;AACzB,0DAA0D;AAC1D;AACA;AACA;;AAEA;AACA,kGAAkG;AAClG;AACA;AACA,2BAA2B,0BAA0B;AACrD,2BAA2B,aAAa;AACxC,2BAA2B,SAAS;AACpC,4BAA4B,MAAM;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,2BAA2B,SAAS;AACpC,4BAA4B,EAAE;AAC9B,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D,oCAAoC;AACnG;AACA;AACA,2BAA2B,OAAO;AAClC,4BAA4B,EAAE;AAC9B,4BAA4B,MAAM;AAClC;AACA;AACA;;AAEA;;AAEA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA,uCAAuC,EAAE;AACzC,uCAAuC,SAAS;AAChD,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE;AAC7C,2CAA2C,SAAS;AACpD,6CAA6C,0BAA0B;AACvE;AACA,4CAA4C,MAAM;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE;AAC7C,2CAA2C,SAAS;AACpD,6CAA6C,0BAA0B;AACvE;AACA,4CAA4C,MAAM;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE;AAC9C;AACA;AACA;;AAEA,yBAAyB;AACzB;;AAEA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD,2BAA2B,SAAS;AACpC,4BAA4B,YAAY;AACxC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,mBAAmB;AAC9C,2BAA2B,uBAAuB;AAClD,2BAA2B,SAAS;AACpC,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD,2BAA2B,SAAS;AACpC,4BAA4B,YAAY;AACxC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA,gFAAgF,wCAAwC;AACxH;AACA;AACA,4BAA4B,YAAY;AACxC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA,+EAA+E,wCAAwC;AACvH;AACA;AACA,4BAA4B;AAC5B,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA,yFAAyF,wCAAwC;AACjI;AACA;AACA,4BAA4B,OAAO;AACnC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA,sFAAsF,yCAAyC;AAC/H;AACA;AACA,4BAA4B,OAAO;AACnC,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,QAAQ;AACnC,2BAA2B,QAAQ;AACnC,2BAA2B,qBAAqB;AAChD,6BAA6B,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,SAAS;AACpC,2BAA2B,QAAQ;AACnC,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,wCAAwC;AACnE,2BAA2B,iBAAiB;AAC5C,2BAA2B,QAAQ;AACnC,4BAA4B,0BAA0B;AACtD,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,wCAAwC;AACnE,2BAA2B,QAAQ;AACnC,4BAA4B,yBAAyB;AACrD,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,4BAA4B,0BAA0B;AACtD,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,4BAA4B,0BAA0B;AACtD,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,4BAA4B,0BAA0B;AACtD,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA,gEAAgE,wBAAwB;AACxF,yEAAyE,+BAA+B;AACxG,6DAA6D,aAAa;AAC1E,sEAAsE,aAAa;;AAEnF;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,wDAAwD,KAAK;AAC7D;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C,mBAAmB,WAAW;AAC9B,mBAAmB,SAAS;AAC5B,oBAAoB,WAAW;AAC/B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,qDAAqD,KAAK;AAC1D;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C,qBAAqB,OAAO;AAC5B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA,iEAAiE,KAAK;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,YAAY;AAC/B,qBAAqB,QAAQ;AAC7B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,WAAW;AAC9B,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,oBAAoB,yBAAyB;AAC7C,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,sCAAsC;AACtC,iEAAiE;AACjE;AACA,qDAAqD;AACrD,2DAA2D;AAC3D;AACA;AACA;;AAEA;AACA,gDAAgD,KAAK;AACrD;AACA;AACA,mDAAmD;AACnD;AACA,qBAAqB;AACrB;AACA,6CAA6C;AAC7C;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,0BAA0B;AAC7C,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,mBAAmB;AACtC,mBAAmB,iCAAiC;AACpD,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,QAAQ,+BAA+B;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,SAAS;AAC5B,oBAAoB,EAAE;AACtB,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,0BAA0B;AAC7C,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,WAAW;AAC9B,mBAAmB,0BAA0B;AAC7C,oBAAoB,WAAW;AAC/B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kDAAkD;AAClD,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,0BAA0B;AAC7C,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA,qBAAqB;AACrB,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,WAAW;AAC9B,mBAAmB,SAAS;AAC5B,oBAAoB,EAAE;AACtB;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,0BAA0B;AAC7C,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,0BAA0B;AAC7C,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,oBAAoB;AACvC,mBAAmB,OAAO;AAC1B,mBAAmB,mBAAmB;AACtC,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,OAAO;AAC1B,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,uBAAuB;AAC1C,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,oBAAoB;AACvC,mBAAmB,OAAO;AAC1B,mBAAmB,gCAAgC;AACnD;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,4BAA4B;AAC/C,mBAAmB,OAAO;AAC1B,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,oBAAoB,SAAS;AAC7B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,wFAAwF;AACnH;AACA;AACA,4BAA4B,MAAM;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,gJAAgJ;AAChJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,wFAAwF;AACnH,2BAA2B,yBAAyB;AACpD,2BAA2B,sEAAsE;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD,2BAA2B,sEAAsE;AACjG;AACA;AACA;;AAEA;AACA,6BAA6B,cAAc;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qDAAqD,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qFAAqF,6BAA6B;AAClH,8FAA8F,4CAA4C;AAC1I,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA,gEAAgE,wBAAwB;AACxF,yEAAyE,+BAA+B;AACxG,6DAA6D,aAAa;AAC1E,sEAAsE,aAAa;;AAEnF;;AAEA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,0BAA0B;AAC7C,mBAAmB,OAAO;AAC1B,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,0BAA0B;AAC7C,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC,qBAAqB,kBAAkB;AACvC,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C,0CAA0C;AAC1C;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;;AAEA,qBAAqB;;AAErB;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B,yBAAyB;AACzB;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,kCAAkC;AAClC,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC,mBAAmB,SAAS,2BAA2B,GAAG;AAC1D,qBAAqB,kBAAkB;AACvC,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,+BAA+B,mBAAO,CAAC,EAAM;AAC7C;AACA;AACA;;AAEA,aAAa,yCAAyC;;AAEtD;AACA;AACA,2BAA2B,mBAAO,CAAC,EAAM;AACzC;AACA;AACA;AACA;AACA,4BAA4B,mBAAO,CAAC,EAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mDAAmD;;AAEnD,uDAAuD,kBAAkB;AACzE;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA,0BAA0B;AAC1B,yDAAyD;AACzD;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA,iBAAiB;AACjB;;AAEA,6BAA6B,0BAA0B;AACvD,iEAAiE;AACjE;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,6CAA6C,mBAAO,CAAC,EAAM;AAC3D;AACA;AACA;AACA,qCAAqC;AACrC;AACA,yFAAyF;AACzF;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,qGAAqG;AACrG,qBAAqB;AACrB;AACA;AACA;AACA,uHAAuH,8BAA8B,EAAE;AACvJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,MAAM;AAC1B,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,wDAAwD;;AAExD;AACA;AACA;AACA,iBAAiB;;AAEjB,aAAa,sDAAsD;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,yBAAyB,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD,mBAAmB,QAAQ;AAC3B,mBAAmB,SAAS;AAC5B,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA,mBAAmB,wBAAwB;AAC3C,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB,iBAAiB;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,qCAAqC;AACtE,aAAa;;AAEb;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,UAAU;AAC7B,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;;AAEA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA;AACA,eAAe,mBAAmB;AAClC,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,0BAA0B,2BAA2B,GAAG;AACvE,eAAe,SAAS,2BAA2B,GAAG;AACtD,gBAAgB,iBAAiB;AACjC,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS,4BAA4B;AACpD;AACA,eAAe,sCAAsC;AACrD;AACA;AACA,eAAe,kBAAkB;AACjC,gBAAgB,4BAA4B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;AClrID;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,IAA6C;AAC/D,QAAQ,iCAAO,CAAC,wBAAM,CAAC,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAC;AACjC;AACA;AACA,qBAAqB,MAAM,wBAAwB,EAAE;AACrD;AACA,SAAS;AACT;AACA,oDAAoD;;AAEpD,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ,yCAAyC,kCAAkC;AAClG,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,eAAe,SAAS;AACxB,SAAS,kCAAkC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,uBAAuB;AACxC;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,mCAAmC;AACpD;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ,yCAAyC,kCAAkC;AAClG,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,eAAe,SAAS;AACxB,SAAS,kCAAkC;AAC3C,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,qDAAqD;AACpE,eAAe,kBAAkB;AACjC;AACA,eAAe,SAAS;AACxB,YAAY,gCAAgC;AAC5C,eAAe,SAAS;AACxB,SAAS,kCAAkC;AAC3C,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,KAAK;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,wBAAwB;AAC5F,SAAS,uBAAuB;AAChC,eAAe,4DAA4D;AAC3E,eAAe,kBAAkB;AACjC;AACA,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,eAAe,SAAS;AACxB,SAAS,kCAAkC;AAC3C,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,SAAS,0CAA0C;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wEAAwE;AACjF;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA,SAAS;AACT,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,wBAAwB;AAC/E;AACA,eAAe,4CAA4C;AAC3D;AACA,eAAe,iBAAiB;AAChC,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA2D,2BAA2B;AACtF;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA,0DAA0D,0BAA0B;AACpF;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D,4BAA4B;AACzF;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4DAA4D,2BAA2B;AACvF;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA2D,4BAA4B;AACvF;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;;AAEA;AACA,0DAA0D,2BAA2B;AACrF;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D,6BAA6B;AAC1F;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,kDAAkD,wBAAwB;AACjG,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4DAA4D,4BAA4B;AACxF;AACA,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA2D,4BAA4B;AACvF,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA,0DAA0D,2BAA2B;AACrF,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D,6BAA6B;AAC1F;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4DAA4D,4BAA4B;AACxF;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,mBAAmB,aAAa;AAChC,mBAAmB,QAAQ,mDAAmD,wBAAwB;AACtG,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D,4BAA4B;AAC3F,mBAAmB,aAAa;AAChC,mBAAmB,QAAQ,mDAAmD,wBAAwB;AACtG,qBAAqB,YAAY;AACjC;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ,oDAAoD,wBAAwB;AACvG,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8DAA8D,2BAA2B;AACzF,mBAAmB,QAAQ,oDAAoD,wBAAwB;AACvG,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,aAAa;AAChC,mBAAmB,QAAQ,mDAAmD,wBAAwB;AACtG,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,6BAA6B;AAC9F;AACA,mBAAmB,aAAa;AAChC,mBAAmB,QAAQ,mDAAmD,wBAAwB;AACtG,qBAAqB,YAAY;AACjC;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ,oDAAoD,wBAAwB;AACvG,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE,4BAA4B;AAC5F;AACA,mBAAmB,QAAQ,oDAAoD,wBAAwB;AACvG,qBAAqB;AACrB;AACA;AACA;;AAEA,KAAK;;;AAGL;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,WAAW;;AAEzB;AACA;AACA;AACA,cAAc,WAAW;;AAEzB;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,cAAc,WAAW;;AAEzB;AACA;AACA,cAAc,UAAU;;AAExB;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,8BAA8B;AAChF;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD,6BAA6B;AAC9E;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,8BAA8B;AAChF;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD,6BAA6B;AAC9E;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG,iBAAiB;AACjB;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO,sCAAsC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,mDAAmD;AACnD;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,0CAA0C;AAC1C;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,SAAS,+BAA+B;AACzD;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,SAAS,+BAA+B;AACzD;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,aAAa;AAChC,qBAAqB,OAAO,sCAAsC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,mBAAmB,aAAa;AAChC,qBAAqB,MAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,aAAa;AAChC,qBAAqB,MAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B,mBAAmB,QAAQ,mDAAmD,wBAAwB;AACtG;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B,mBAAmB,QAAQ,mDAAmD,wBAAwB;AACtG;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ,oDAAoD,wBAAwB;AACvG;AACA,qBAAqB,QAAQ,6BAA6B;AAC1D;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,oCAAoC,2BAA2B;AAC/D,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ,oDAAoD,wBAAwB;AACvG;AACA,qBAAqB,QAAQ,6BAA6B;AAC1D;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;;;AAGL;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,SAAS,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,SAAS,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA2D,iCAAiC;AAC5F;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,6EAA6E,oCAAoC;AACjH;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,SAAS,+BAA+B;AACxC,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,SAAS,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA,aAAa;AACb,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,0DAA0D,gCAAgC;AAC1F;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,SAAS,+BAA+B;AACxC,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,SAAS,gCAAgC;AAC1D;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ,mDAAmD,wBAAwB;AAClG;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,SAAS,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,eAAe,4CAA4C;AAC3D;AACA,eAAe,iBAAiB;AAChC,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,QAAQ,oDAAoD,wBAAwB;AACnG;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,wBAAwB,aAAa,uBAAuB;AAChH,6CAA6C,8BAA8B;AAC3E,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+FAA+F,wBAAwB;AACvH,SAAS,8BAA8B,MAAM,uBAAuB;AACpE,eAAe,SAAS;AACxB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,wBAAwB;AAC3E,iBAAiB,wBAAwB,MAAM,uBAAuB;AACtE,eAAe,8BAA8B;AAC7C,eAAe,QAAQ,wCAAwC;AAC/D,eAAe,QAAQ,oCAAoC;AAC3D,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qFAAqF,wBAAwB;AAC7G,SAAS,uBAAuB;AAChC,eAAe,QAAQ,kCAAkC,wBAAwB;AACjF,eAAe,QAAQ,8BAA8B,uBAAuB;AAC5E,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gGAAgG,wBAAwB;AACxH,SAAS,uBAAuB;AAChC,eAAe,YAAY;AAC3B,eAAe,QAAQ,qEAAqE;AAC5F;AACA,eAAe,QAAQ,mEAAmE,wBAAwB;AAClH;AACA,eAAe,QAAQ,sDAAsD;AAC7E,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;;AAE1B;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,wBAAwB,MAAM,uBAAuB;AAC9D,eAAe,cAAc;AAC7B,eAAe,QAAQ,4CAA4C,wBAAwB;AAC3F,yCAAyC,wBAAwB;AACjE,eAAe,QAAQ,8BAA8B,uBAAuB;AAC5E,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ,qCAAqC,wBAAwB;AACpF,iBAAiB,YAAY;AAC7B,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gCAAgC;AAC/C;AACA,eAAe,iBAAiB;AAChC,eAAe,QAAQ,qDAAqD,wBAAwB;AACpG;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,QAAQ,qDAAqD,wBAAwB;AACpG;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oFAAoF,wBAAwB;AAC5G,SAAS,uBAAuB;AAChC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wBAAwB,wCAAwC;AACjG,yCAAyC,8BAA8B;AACvE;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,YAAY;AAC7B,gBAAgB,UAAU;AAC1B,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ,wCAAwC;AAC/D,eAAe,QAAQ,oCAAoC;AAC3D,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ,kCAAkC,wBAAwB;AACjF,eAAe,QAAQ,8BAA8B,uBAAuB;AAC5E,iBAAiB,YAAY,oEAAoE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,MAAM,uBAAuB;AAC9D,eAAe,SAAS;AACxB;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,wBAAwB,MAAM,uBAAuB,uBAAuB,0BAA0B;AAC/G;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA,eAAe,QAAQ,wCAAwC;AAC/D,eAAe,QAAQ,oCAAoC;AAC3D,iBAAiB,OAAO;AACxB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,qBAAqB,QAAQ;AAC7B;AACA;AACA,sCAAsC,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;AAChF;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,eAAe,QAAQ,wCAAwC,wBAAwB;AACvF,eAAe,QAAQ,oCAAoC,uBAAuB;AAClF,iBAAiB,OAAO;AACxB,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,eAAe;AACf;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,QAAQ,wCAAwC,wBAAwB;AACvF,eAAe,QAAQ,oCAAoC,uBAAuB;AAClF,iBAAiB,OAAO;AACxB,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,eAAe,SAAS;AACxB,SAAS,kCAAkC;AAC3C,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,QAAQ,wCAAwC,wBAAwB;AACvF,eAAe,QAAQ,oCAAoC,uBAAuB;AAClF,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,eAAe,SAAS;AACxB,SAAS,kCAAkC;AAC3C,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mCAAmC;AACtD;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC,oBAAoB,WAAW;AAC/B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mCAAmC;AACtD;AACA,mBAAmB,kBAAkB;AACrC,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA,4CAA4C,aAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC,oBAAoB,WAAW;AAC/B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA,mDAAmD,wBAAwB,MAAM,uBAAuB;AACxG;AACA,iBAAiB,OAAO;AACxB,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,SAAS,gCAAgC;AACzC,eAAe,SAAS;AACxB,SAAS,kCAAkC;AAC3C,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;ACjqHD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,IAA6C;AAC/D,QAAQ,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAC;AAC3B;AACA;AACA;AACA,oDAAoD;;AAEpD,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA,2BAA2B;;AAE3B;AACA,eAAe,OAAO;AACtB,eAAe,kBAAkB;AACjC,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,kBAAkB;AACjC,eAAe,QAAQ;AACvB,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,eAAe,sBAAsB,8CAA8C;AACnF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,sBAAsB,8CAA8C;AACnF,iBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,0BAA0B,SAAS;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+EAA+E,kBAAkB;AACjG;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA,qFAAqF,qBAAqB;AAC1G;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA,qFAAqF,oBAAoB;AACzG;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA,8FAA8F,2BAA2B;AACzH;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA,wFAAwF,uBAAuB;AAC/G;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA,iGAAiG,8BAA8B;AAC/H;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6EAA6E,mBAAmB;AAChG;AACA,eAAe,oBAAoB;AACnC,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,kBAAkB;AACzE;AACA,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF,oBAAoB;AACvG;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gFAAgF,oBAAoB;AACpG;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,kBAAkB;AAC1F;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oEAAoE,kBAAkB;AACtF;AACA,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iGAAiG,qBAAqB;AACtH;AACA,eAAe,aAAa;AAC5B,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iHAAiH,sBAAsB;AACvI;AACA,eAAe,aAAa;AAC5B,iBAAiB,MAAM;AACvB;AACA;;AAEA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,4GAA4G,8BAA8B;AAC1I;AACA,eAAe,aAAa;AAC5B,iBA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ACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B;AAC5B;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3uBA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA,mC;;;;;;ACpCA,wBAAwB,mBAAO,CAAC,GAAqB;;AAErD,sBAAsB,mBAAO,CAAC,GAAmB;;AAEjD,iCAAiC,mBAAO,CAAC,GAA8B;;AAEvE,wBAAwB,mBAAO,CAAC,GAAqB;;AAErD;AACA;AACA;;AAEA,oC;;;;;;ACZA,uBAAuB,mBAAO,CAAC,GAAoB;;AAEnD;AACA;AACA;;AAEA,oC;;;;;;ACNA;AACA;AACA;;AAEA,oC;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,iC;;;;;;ACfA,mCAAmC,mBAAO,CAAC,GAAgC;;AAE3E;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0C;;;;;;ACrBA;AACA;AACA;AACA;AACA;;AAEA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+C;;;;;;ACfA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wC;;;;;;ACRA;AACA;AACA;AACA;AACA;;AAEA,gC;;;;;;ACNA,mBAAmB,mBAAO,CAAC,GAAiB;AAC5C,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,cAAc,mBAAO,CAAC,GAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxBA,gBAAgB,mBAAO,CAAC,GAAc;AACtC,kBAAkB,mBAAO,CAAC,GAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,aAAa,mBAAO,CAAC,GAAU;;AAE/B;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA,eAAe,mBAAO,CAAC,GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA,oBAAoB,mBAAO,CAAC,GAAkB;AAC9C,eAAe,mBAAO,CAAC,GAAa;AACpC,kBAAkB,mBAAO,CAAC,GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA,gBAAgB,mBAAO,CAAC,GAAc;AACtC,kBAAkB,mBAAO,CAAC,GAAe;AACzC,cAAc,mBAAO,CAAC,GAAW;AACjC,eAAe,mBAAO,CAAC,GAAY;AACnC,cAAc,mBAAO,CAAC,GAAY;AAClC,mBAAmB,mBAAO,CAAC,GAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA,sBAAsB,mBAAO,CAAC,GAAoB;AAClD,mBAAmB,mBAAO,CAAC,EAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;ACnCA,iBAAiB,mBAAO,CAAC,EAAe;AACxC,mBAAmB,mBAAO,CAAC,EAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA,aAAa,mBAAO,CAAC,GAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA,yDAAW,mBAAO,CAAC,GAAS;AAC5B,gBAAgB,mBAAO,CAAC,GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxBA,uBAAuB,mBAAO,CAAC,GAAqB;AACpD,gBAAgB,mBAAO,CAAC,GAAc;AACtC,eAAe,mBAAO,CAAC,GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1BA,iBAAiB,mBAAO,CAAC,EAAe;AACxC,eAAe,mBAAO,CAAC,GAAY;AACnC,mBAAmB,mBAAO,CAAC,EAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3DA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA,+DAAiB,mBAAO,CAAC,GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,iBAAiB,mBAAO,CAAC,GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjBA,cAAc,mBAAO,CAAC,GAAY;;AAElC;AACA;;AAEA;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,GAAc;AACvC,eAAe,mBAAO,CAAC,GAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA,iBAAiB,mBAAO,CAAC,EAAe;AACxC,eAAe,mBAAO,CAAC,GAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA,qBAAqB,mBAAO,CAAC,GAAkB;;AAE/C,sBAAsB,mBAAO,CAAC,GAAmB;;AAEjD,iCAAiC,mBAAO,CAAC,GAA8B;;AAEvE,sBAAsB,mBAAO,CAAC,GAAmB;;AAEjD;AACA;AACA;;AAEA,0B;;;;;;ACZA;AACA;AACA;;AAEA,iC;;;;;;ACJA;AACA;AACA;;AAEA,kC;;;;;;ACJA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8B;;;;;;AChBA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2C;;;;;;AC7BA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;;AAEA,6DAA6D,qBAAqB,eAAe,kDAAkD;AACnJ;AACA;AACA;AACA;AACA,4BAA4B,kDAAkD,SAAS,eAAe;AACtG,4BAA4B,kDAAkD;;AAE9E;AACA,kGAAkG;AAClG;AACA,wBAAwB,kBAAkB;AAC1C;AACA;;AAEA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,uDAAuD;AACpE;;AAEA,qBAAqB,oBAAoB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,6FAA6F;AACtI,yCAAyC,wJAAwJ;AACjM,yCAAyC,yBAAyB;AAClE,yCAAyC,2FAA2F;AACpI,yCAAyC,0BAA0B;AACnE,oFAAoF,gBAAgB,GAAG;AACvG,oCAAoC;;AAEpC;AACA;;AAEA;;AAEA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,0DAA0D,uGAAuG,EAAE;AACnK,0DAA0D,uGAAuG,EAAE;AACnK,0DAA0D,uGAAuG,EAAE;AACnK,0DAA0D,uGAAuG,EAAE;AACnK,0DAA0D,uGAAuG,EAAE;;AAEnK,0DAA0D,uGAAuG,EAAE;AACnK,0DAA0D,uGAAuG,EAAE;AACnK,0DAA0D,uGAAuG,EAAE;AACnK,0DAA0D,uGAAuG,EAAE;;AAEnK;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA,0DAA0D;;AAE1D;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;;AAEA;AACA;AACA;AACA,MAAM,IAA8B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qBAAqB,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;ACrOD;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yB;;;;;;AChBA,iBAAiB,mBAAO,CAAC,EAAe;AACxC,mBAAmB,mBAAO,CAAC,GAAiB;AAC5C,mBAAmB,mBAAO,CAAC,EAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7DA,cAAc,mBAAO,CAAC,GAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLC,WAAUlF,MAAV,EAAkB80C,OAAlB,EAA2B;AAC1B,gDAAOz7C,OAAP,OAAmB,QAAnB,IAA+B,OAAOD,MAAP,KAAkB,WAAjD,GAA+D07C,QAAQz7C,OAAR,EAAiB9E,mBAAOA,CAAC,GAAR,CAAjB,CAA/D,GACA,QAA6CwgD,iCAAqB,CAAC,OAAD,EAAY,wBAAZ,CAArB,oCAA6DD,OAA7D;AAAA;AAAA;AAAA,oGAA7C,IACC90C,SAASA,UAAUiM,IAAnB,EAAyB6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","file":"av-live-query-core.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 = 208);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap d8e265db7f804e6cdd46","// 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","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 = 1\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 = 2\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 = 3\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 = 4\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 = 5\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 = 6\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 = 7\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 = 8\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 = 9\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 = 10\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 = 11\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 = 12\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 = 13\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","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 = 15\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 = 16\n// module chunks = 0 1","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 = 17\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 = 18\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 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 = 20\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 = 21\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 = 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","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 = 26\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 = 27\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 = 28\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 = 29\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 = 30\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 = 31\n// module chunks = 0 1","\"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 = 32\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","'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 = 34\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iterators.js\n// module id = 35\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 = 36\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 = 37\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 = 38\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 = 39\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 = 40\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","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","\"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 = 43\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 = 44\n// module chunks = 0 1","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_library.js\n// module id = 45\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 = 46\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 = 47\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 = 48\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 = 49\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 = 50\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 = 51\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 = 52\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 = 53\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 = 54\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 = 55\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 = 56\n// module chunks = 0 1","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_validate-collection.js\n// module id = 57\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 = 59\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 = 60\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 = 61\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 = 62\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 = 63\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 = 64\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 = 65\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 = 66\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 = 67\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 = 68\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 = 69\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 = 70\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","exports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gops.js\n// module id = 72\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 = 73\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 = 74\n// module chunks = 0 1","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// path (ignored)\n// module id = 75\n// module chunks = 0 1","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGetTag.js\n// module id = 76\n// module chunks = 0 1","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObjectLike.js\n// module id = 77\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 = 78\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 = 79\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 = 80\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 = 81\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 = 82\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 = 83\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 = 84\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 = 85\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 = 86\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 = 87\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 = 88\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 = 89\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 = 90\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 = 91\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 = 92\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 = 93\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 = 94\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 = 95\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 = 96\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 = 97\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 = 98\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 = 99\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 = 100\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 = 101\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 = 102\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 = 103\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 = 104\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 = 105\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 = 106\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 = 107\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 = 108\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 = 109\n// module chunks = 0 1","module.exports = require('./dist/core');\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/leancloud-realtime/core.js","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_array-methods.js\n// module id = 111\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 = 112\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 = 113\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 = 114\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 = 115\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 = 116\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 = 117\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 = 118\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 = 119\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 = 120\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 = 121\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 = 122\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 = 123\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 = 124\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 = 125\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 = 126\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 = 127\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 = 128\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 = 129\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 = 130\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 = 131\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 = 132\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 = 133\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 = 134\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 = 135\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 = 136\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 = 137\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 = 138\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 = 139\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 = 140\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 = 141\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 = 142\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 = 143\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 = 144\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 = 145\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 = 146\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 = 147\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 = 148\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 = 149\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 = 150\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 = 151\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 = 152\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 = 153\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 = 154\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 = 155\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 = 156\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 = 157\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 = 158\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 = 159\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 = 160\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 = 161\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 = 162\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 = 163\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 = 164\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 = 165\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 = 166\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 = 167\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 = 168\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 = 169\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 = 170\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 = 171\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 = 172\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 = 173\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 = 174\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 = 175\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 = 177\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","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 = 180\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 = 181\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 = 182\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 = 183\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 = 184\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 = 185\n// module chunks = 0 1","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 = 186\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 = 187\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/set\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/set.js\n// module id = 188\n// module chunks = 0 1","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_collection.js\n// module id = 189\n// module chunks = 0 1","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-collection-of.js\n// module id = 190\n// module chunks = 0 1","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-collection-from.js\n// module id = 191\n// module chunks = 0 1","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-assign.js\n// module id = 192\n// module chunks = 0 1","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_create-property.js\n// module id = 193\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-symbols\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/get-own-property-symbols.js\n// module id = 194\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/assign.js\n// module id = 195\n// module chunks = 0 1","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\n// module id = 196\n// module chunks = 0 1","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/iterableToArray.js\n// module id = 197\n// module chunks = 0 1","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\n// module id = 198\n// module chunks = 0 1","var baseRandom = require('./_baseRandom');\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nmodule.exports = shuffleSelf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_shuffleSelf.js\n// module id = 199\n// module chunks = 0 1","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/values.js\n// module id = 200\n// module chunks = 0 1","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Symbol.js\n// module id = 201\n// module chunks = 0 1","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_root.js\n// module id = 202\n// module chunks = 0 1","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_freeGlobal.js\n// module id = 203\n// module chunks = 0 1","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArray.js\n// module id = 204\n// module chunks = 0 1","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 205\n// module chunks = 0 1","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isLength.js\n// module id = 206\n// module chunks = 0 1","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_overArg.js\n// module id = 207\n// module chunks = 0 1","const AV = require('./core');\nconst useLiveQuery = require('./use-live-query');\n\nmodule.exports = useLiveQuery(AV);\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/core-live-query.js","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 = 211\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 = 212\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 = 213\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 = 214\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 = 215\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 = 216\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 = 217\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 = 218\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 = 219\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 = 220\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 = 221\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 = 222\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 = 223\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 = 224\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 = 225\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 = 226\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 = 227\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 = 228\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 = 229\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 = 230\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 = 231\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 = 232\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 = 233\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 = 234\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 = 235\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 = 236\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 = 237\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 = 238\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 = 239\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 = 240\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 = 241\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 = 242\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 = 243\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 = 244\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 = 245\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 = 246\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 = 247\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 = 248\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 = 249\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 = 250\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 = 251\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 = 252\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 = 253\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 = 254\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 = 255\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 = 256\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 = 257\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 = 258\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 = 259\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 = 260\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 = 261\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 = 262\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 = 263\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 = 264\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 = 265\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 = 266\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 = 267\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 = 268\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 = 269\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 = 270\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 = 271\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 = 272\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 = 273\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 = 274\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 = 275\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 = 276\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 = 277\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 = 278\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 = 279\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 = 280\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 = 281\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 = 282\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 = 283\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 = 284\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 = 285\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 = 286\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 = 287\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 = 288\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 = 289\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 = 290\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 = 291\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 = 292\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 = 293\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 = 294\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 = 295\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 = 296\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 = 297\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 = 298\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 = 299\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 = 300\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 = 301\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 = 302\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 = 303\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 = 304\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 = 306\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 = 307\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 = 309\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 = 310\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 = 311\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 = 312\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 = 313\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 = 314\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 = 315\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 = 324\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 = 325\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 = 326\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 = 327\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 = 328\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 = 329\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 = 330\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 = 331\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 = 332\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 = 333\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 = 334\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 = 335\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 = 338\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 = 339\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 = 340\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","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 = 343\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 = 344\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 = 345\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 = 346\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 = 347\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 = 350\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","const {\n Realtime,\n setAdapters: setRTMAdapters,\n} = require('leancloud-realtime/core');\nconst { LiveQueryPlugin } = require('leancloud-realtime-plugin-live-query');\nRealtime.__preRegisteredPlugins = [LiveQueryPlugin];\n\nmodule.exports = AV => {\n AV._sharedConfig.liveQueryRealtime = Realtime;\n\n const { setAdapters } = AV;\n AV.setAdapters = adapters => {\n setAdapters(adapters);\n setRTMAdapters(adapters);\n };\n\n return AV;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/use-live-query.js","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar protobufLight = _interopDefault(require('protobufjs/dist/protobuf-light'));\nvar EventEmitter = _interopDefault(require('eventemitter3'));\nvar _regeneratorRuntime = _interopDefault(require('@babel/runtime/regenerator'));\nvar _asyncToGenerator = _interopDefault(require('@babel/runtime/helpers/asyncToGenerator'));\nvar _toConsumableArray = _interopDefault(require('@babel/runtime/helpers/toConsumableArray'));\nvar _defineProperty = _interopDefault(require('@babel/runtime/helpers/defineProperty'));\nvar _objectWithoutProperties = _interopDefault(require('@babel/runtime/helpers/objectWithoutProperties'));\nvar _assertThisInitialized = _interopDefault(require('@babel/runtime/helpers/assertThisInitialized'));\nvar _inheritsLoose = _interopDefault(require('@babel/runtime/helpers/inheritsLoose'));\nvar d = _interopDefault(require('debug'));\nvar shuffle = _interopDefault(require('lodash/shuffle'));\nvar values = _interopDefault(require('lodash/values'));\nvar _toArray = _interopDefault(require('@babel/runtime/helpers/toArray'));\nvar _createClass = _interopDefault(require('@babel/runtime/helpers/createClass'));\nvar _applyDecoratedDescriptor = _interopDefault(require('@babel/runtime/helpers/applyDecoratedDescriptor'));\nvar StateMachine = _interopDefault(require('javascript-state-machine'));\nvar _typeof = _interopDefault(require('@babel/runtime/helpers/typeof'));\nvar isPlainObject = _interopDefault(require('lodash/isPlainObject'));\nvar promiseTimeout = require('promise-timeout');\n\nvar messageCompiled = protobufLight.newBuilder({})['import']({\n \"package\": 'push_server.messages2',\n syntax: 'proto2',\n options: {\n objc_class_prefix: 'AVIM'\n },\n messages: [{\n name: 'JsonObjectMessage',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'string',\n name: 'data',\n id: 1\n }]\n }, {\n name: 'UnreadTuple',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'required',\n type: 'int32',\n name: 'unread',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 6\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentioned',\n id: 8\n }, {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 9\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 10\n }]\n }, {\n name: 'LogItem',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'msgId',\n id: 4\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'ackAt',\n id: 5\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'readAt',\n id: 6\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 8\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 9\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'bin',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 11\n }]\n }, {\n name: 'ConvMemberInfo',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'role',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'infoId',\n id: 3\n }]\n }, {\n name: 'DataCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 1\n }, {\n rule: 'repeated',\n type: 'JsonObjectMessage',\n name: 'msg',\n id: 2\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 3\n }]\n }, {\n name: 'SessionCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'ua',\n id: 4\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'tag',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'deviceId',\n id: 7\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 8\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'onlineSessionPeerIds',\n id: 9\n }, {\n rule: 'optional',\n type: 'string',\n name: 'st',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'stTtl',\n id: 11\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 12\n }, {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 'deviceToken',\n id: 14\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'sp',\n id: 15\n }, {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 16\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'lastUnreadNotifTime',\n id: 17\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 18\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'configBitmap',\n id: 19\n }]\n }, {\n name: 'ErrorCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'int32',\n name: 'code',\n id: 1\n }, {\n rule: 'required',\n type: 'string',\n name: 'reason',\n id: 2\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 4\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'pids',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 6\n }]\n }, {\n name: 'DirectCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'msg',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'fromPeerId',\n id: 3\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 5\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'hasMore',\n id: 6\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'toPeerIds',\n id: 7\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 10\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 12\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 'dt',\n id: 14\n }, {\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 15\n }, {\n rule: 'optional',\n type: 'string',\n name: 'pushData',\n id: 16\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'will',\n id: 17\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 18\n }, {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 19\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 20\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 21\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 22\n }]\n }, {\n name: 'AckCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 6\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'fromts',\n id: 7\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'tots',\n id: 8\n }, {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 9\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 12\n }]\n }, {\n name: 'UnreadCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'UnreadTuple',\n name: 'convs',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'notifTime',\n id: 2\n }]\n }, {\n name: 'ConvCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'string',\n name: 'm',\n id: 1\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 2\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'unique',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cdate',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'initBy',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'sort',\n id: 7\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 8\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'skip',\n id: 9\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'flag',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'count',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'udate',\n id: 12\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 14\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 15\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'statusSub',\n id: 16\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'statusPub',\n id: 17\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'statusTTL',\n id: 18\n }, {\n rule: 'optional',\n type: 'string',\n name: 'uniqueId',\n id: 19\n }, {\n rule: 'optional',\n type: 'string',\n name: 'targetClientId',\n id: 20\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 21\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 22\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'queryAllMembers',\n id: 23\n }, {\n rule: 'repeated',\n type: 'MaxReadTuple',\n name: 'maxReadTuples',\n id: 24\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 25\n }, {\n rule: 'optional',\n type: 'ConvMemberInfo',\n name: 'info',\n id: 26\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'tempConv',\n id: 27\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'tempConvTTL',\n id: 28\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'tempConvIds',\n id: 29\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 30\n }, {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 31\n }, {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 40\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 100\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'where',\n id: 101\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attr',\n id: 103\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attrModified',\n id: 104\n }]\n }, {\n name: 'RoomCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 4\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 5\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'roomPeerIds',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'byPeerId',\n id: 7\n }]\n }, {\n name: 'LogsCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'l',\n id: 2\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 3\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 4\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'tt',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'tmid',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 7\n }, {\n rule: 'optional',\n type: 'string',\n name: 'checksum',\n id: 8\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'stored',\n id: 9\n }, {\n rule: 'optional',\n type: 'QueryDirection',\n name: 'direction',\n id: 10,\n options: {\n \"default\": 'OLD'\n }\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'tIncluded',\n id: 11\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'ttIncluded',\n id: 12\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'lctype',\n id: 13\n }, {\n rule: 'repeated',\n type: 'LogItem',\n name: 'logs',\n id: 105\n }],\n enums: [{\n name: 'QueryDirection',\n syntax: 'proto2',\n values: [{\n name: 'OLD',\n id: 1\n }, {\n name: 'NEW',\n id: 2\n }]\n }]\n }, {\n name: 'RcpCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'read',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5\n }]\n }, {\n name: 'ReadTuple',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3\n }]\n }, {\n name: 'MaxReadTuple',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 3\n }]\n }, {\n name: 'ReadCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2\n }, {\n rule: 'repeated',\n type: 'ReadTuple',\n name: 'convs',\n id: 3\n }]\n }, {\n name: 'PresenceCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'StatusType',\n name: 'status',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 3\n }]\n }, {\n name: 'ReportCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'bool',\n name: 'initiative',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 3\n }]\n }, {\n name: 'PatchItem',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'recall',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 5\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 7\n }, {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 8\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 9\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 10\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchCode',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'patchReason',\n id: 12\n }]\n }, {\n name: 'PatchCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'PatchItem',\n name: 'patches',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 2\n }]\n }, {\n name: 'PubsubCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'topic',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'subtopic',\n id: 4\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'topics',\n id: 5\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'subtopics',\n id: 6\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 7\n }]\n }, {\n name: 'BlacklistCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'srcCid',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'toPids',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'srcPid',\n id: 3\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'toCids',\n id: 4\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 6\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'blockedPids',\n id: 8\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'blockedCids',\n id: 9\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 10\n }, {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 11\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 12\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 14\n }]\n }, {\n name: 'GenericCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'CommandType',\n name: 'cmd',\n id: 1\n }, {\n rule: 'optional',\n type: 'OpType',\n name: 'op',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'appId',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'peerId',\n id: 4\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'i',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'installationId',\n id: 6\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'priority',\n id: 7\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'service',\n id: 8\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'serverTs',\n id: 9\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'clientTs',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'notificationType',\n id: 11\n }, {\n rule: 'optional',\n type: 'DataCommand',\n name: 'dataMessage',\n id: 101\n }, {\n rule: 'optional',\n type: 'SessionCommand',\n name: 'sessionMessage',\n id: 102\n }, {\n rule: 'optional',\n type: 'ErrorCommand',\n name: 'errorMessage',\n id: 103\n }, {\n rule: 'optional',\n type: 'DirectCommand',\n name: 'directMessage',\n id: 104\n }, {\n rule: 'optional',\n type: 'AckCommand',\n name: 'ackMessage',\n id: 105\n }, {\n rule: 'optional',\n type: 'UnreadCommand',\n name: 'unreadMessage',\n id: 106\n }, {\n rule: 'optional',\n type: 'ReadCommand',\n name: 'readMessage',\n id: 107\n }, {\n rule: 'optional',\n type: 'RcpCommand',\n name: 'rcpMessage',\n id: 108\n }, {\n rule: 'optional',\n type: 'LogsCommand',\n name: 'logsMessage',\n id: 109\n }, {\n rule: 'optional',\n type: 'ConvCommand',\n name: 'convMessage',\n id: 110\n }, {\n rule: 'optional',\n type: 'RoomCommand',\n name: 'roomMessage',\n id: 111\n }, {\n rule: 'optional',\n type: 'PresenceCommand',\n name: 'presenceMessage',\n id: 112\n }, {\n rule: 'optional',\n type: 'ReportCommand',\n name: 'reportMessage',\n id: 113\n }, {\n rule: 'optional',\n type: 'PatchCommand',\n name: 'patchMessage',\n id: 114\n }, {\n rule: 'optional',\n type: 'PubsubCommand',\n name: 'pubsubMessage',\n id: 115\n }, {\n rule: 'optional',\n type: 'BlacklistCommand',\n name: 'blacklistMessage',\n id: 116\n }]\n }],\n enums: [{\n name: 'CommandType',\n syntax: 'proto2',\n values: [{\n name: 'session',\n id: 0\n }, {\n name: 'conv',\n id: 1\n }, {\n name: 'direct',\n id: 2\n }, {\n name: 'ack',\n id: 3\n }, {\n name: 'rcp',\n id: 4\n }, {\n name: 'unread',\n id: 5\n }, {\n name: 'logs',\n id: 6\n }, {\n name: 'error',\n id: 7\n }, {\n name: 'login',\n id: 8\n }, {\n name: 'data',\n id: 9\n }, {\n name: 'room',\n id: 10\n }, {\n name: 'read',\n id: 11\n }, {\n name: 'presence',\n id: 12\n }, {\n name: 'report',\n id: 13\n }, {\n name: 'echo',\n id: 14\n }, {\n name: 'loggedin',\n id: 15\n }, {\n name: 'logout',\n id: 16\n }, {\n name: 'loggedout',\n id: 17\n }, {\n name: 'patch',\n id: 18\n }, {\n name: 'pubsub',\n id: 19\n }, {\n name: 'blacklist',\n id: 20\n }, {\n name: 'goaway',\n id: 21\n }]\n }, {\n name: 'OpType',\n syntax: 'proto2',\n values: [{\n name: 'open',\n id: 1\n }, {\n name: 'add',\n id: 2\n }, {\n name: 'remove',\n id: 3\n }, {\n name: 'close',\n id: 4\n }, {\n name: 'opened',\n id: 5\n }, {\n name: 'closed',\n id: 6\n }, {\n name: 'query',\n id: 7\n }, {\n name: 'query_result',\n id: 8\n }, {\n name: 'conflict',\n id: 9\n }, {\n name: 'added',\n id: 10\n }, {\n name: 'removed',\n id: 11\n }, {\n name: 'refresh',\n id: 12\n }, {\n name: 'refreshed',\n id: 13\n }, {\n name: 'start',\n id: 30\n }, {\n name: 'started',\n id: 31\n }, {\n name: 'joined',\n id: 32\n }, {\n name: 'members_joined',\n id: 33\n }, {\n name: 'left',\n id: 39\n }, {\n name: 'members_left',\n id: 40\n }, {\n name: 'results',\n id: 42\n }, {\n name: 'count',\n id: 43\n }, {\n name: 'result',\n id: 44\n }, {\n name: 'update',\n id: 45\n }, {\n name: 'updated',\n id: 46\n }, {\n name: 'mute',\n id: 47\n }, {\n name: 'unmute',\n id: 48\n }, {\n name: 'status',\n id: 49\n }, {\n name: 'members',\n id: 50\n }, {\n name: 'max_read',\n id: 51\n }, {\n name: 'is_member',\n id: 52\n }, {\n name: 'member_info_update',\n id: 53\n }, {\n name: 'member_info_updated',\n id: 54\n }, {\n name: 'member_info_changed',\n id: 55\n }, {\n name: 'join',\n id: 80\n }, {\n name: 'invite',\n id: 81\n }, {\n name: 'leave',\n id: 82\n }, {\n name: 'kick',\n id: 83\n }, {\n name: 'reject',\n id: 84\n }, {\n name: 'invited',\n id: 85\n }, {\n name: 'kicked',\n id: 86\n }, {\n name: 'upload',\n id: 100\n }, {\n name: 'uploaded',\n id: 101\n }, {\n name: 'subscribe',\n id: 120\n }, {\n name: 'subscribed',\n id: 121\n }, {\n name: 'unsubscribe',\n id: 122\n }, {\n name: 'unsubscribed',\n id: 123\n }, {\n name: 'is_subscribed',\n id: 124\n }, {\n name: 'modify',\n id: 150\n }, {\n name: 'modified',\n id: 151\n }, {\n name: 'block',\n id: 170\n }, {\n name: 'unblock',\n id: 171\n }, {\n name: 'blocked',\n id: 172\n }, {\n name: 'unblocked',\n id: 173\n }, {\n name: 'members_blocked',\n id: 174\n }, {\n name: 'members_unblocked',\n id: 175\n }, {\n name: 'check_block',\n id: 176\n }, {\n name: 'check_result',\n id: 177\n }, {\n name: 'add_shutup',\n id: 180\n }, {\n name: 'remove_shutup',\n id: 181\n }, {\n name: 'query_shutup',\n id: 182\n }, {\n name: 'shutup_added',\n id: 183\n }, {\n name: 'shutup_removed',\n id: 184\n }, {\n name: 'shutup_result',\n id: 185\n }, {\n name: 'shutuped',\n id: 186\n }, {\n name: 'unshutuped',\n id: 187\n }, {\n name: 'members_shutuped',\n id: 188\n }, {\n name: 'members_unshutuped',\n id: 189\n }, {\n name: 'check_shutup',\n id: 190\n }]\n }, {\n name: 'StatusType',\n syntax: 'proto2',\n values: [{\n name: 'on',\n id: 1\n }, {\n name: 'off',\n id: 2\n }]\n }],\n isNamespace: true\n}).build();\n\nvar _messages$push_server = messageCompiled.push_server.messages2,\n JsonObjectMessage = _messages$push_server.JsonObjectMessage,\n UnreadTuple = _messages$push_server.UnreadTuple,\n LogItem = _messages$push_server.LogItem,\n DataCommand = _messages$push_server.DataCommand,\n SessionCommand = _messages$push_server.SessionCommand,\n ErrorCommand = _messages$push_server.ErrorCommand,\n DirectCommand = _messages$push_server.DirectCommand,\n AckCommand = _messages$push_server.AckCommand,\n UnreadCommand = _messages$push_server.UnreadCommand,\n ConvCommand = _messages$push_server.ConvCommand,\n RoomCommand = _messages$push_server.RoomCommand,\n LogsCommand = _messages$push_server.LogsCommand,\n RcpCommand = _messages$push_server.RcpCommand,\n ReadTuple = _messages$push_server.ReadTuple,\n MaxReadTuple = _messages$push_server.MaxReadTuple,\n ReadCommand = _messages$push_server.ReadCommand,\n PresenceCommand = _messages$push_server.PresenceCommand,\n ReportCommand = _messages$push_server.ReportCommand,\n GenericCommand = _messages$push_server.GenericCommand,\n BlacklistCommand = _messages$push_server.BlacklistCommand,\n PatchCommand = _messages$push_server.PatchCommand,\n PatchItem = _messages$push_server.PatchItem,\n ConvMemberInfo = _messages$push_server.ConvMemberInfo,\n CommandType = _messages$push_server.CommandType,\n OpType = _messages$push_server.OpType,\n StatusType = _messages$push_server.StatusType;\n\nvar message = /*#__PURE__*/Object.freeze({\n __proto__: null,\n JsonObjectMessage: JsonObjectMessage,\n UnreadTuple: UnreadTuple,\n LogItem: LogItem,\n DataCommand: DataCommand,\n SessionCommand: SessionCommand,\n ErrorCommand: ErrorCommand,\n DirectCommand: DirectCommand,\n AckCommand: AckCommand,\n UnreadCommand: UnreadCommand,\n ConvCommand: ConvCommand,\n RoomCommand: RoomCommand,\n LogsCommand: LogsCommand,\n RcpCommand: RcpCommand,\n ReadTuple: ReadTuple,\n MaxReadTuple: MaxReadTuple,\n ReadCommand: ReadCommand,\n PresenceCommand: PresenceCommand,\n ReportCommand: ReportCommand,\n GenericCommand: GenericCommand,\n BlacklistCommand: BlacklistCommand,\n PatchCommand: PatchCommand,\n PatchItem: PatchItem,\n ConvMemberInfo: ConvMemberInfo,\n CommandType: CommandType,\n OpType: OpType,\n StatusType: StatusType\n});\n\nvar adapters = {};\n\nvar getAdapter = function getAdapter(name) {\n var adapter = adapters[name];\n\n if (adapter === undefined) {\n throw new Error(\"\".concat(name, \" adapter is not configured\"));\n }\n\n return adapter;\n};\n/**\n * 指定 Adapters\n * @function\n * @memberof module:leancloud-realtime\n * @param {Adapters} newAdapters Adapters 的类型请参考 {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} 中的定义\n */\n\n\nvar setAdapters = function setAdapters(newAdapters) {\n Object.assign(adapters, newAdapters);\n};\n\n/* eslint-disable */\nvar global$1 = typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : {};\n\nvar EXPIRED = Symbol('expired');\nvar debug = d('LC:Expirable');\n\nvar Expirable = /*#__PURE__*/function () {\n function Expirable(value, ttl) {\n this.originalValue = value;\n\n if (typeof ttl === 'number') {\n this.expiredAt = Date.now() + ttl;\n }\n }\n\n _createClass(Expirable, [{\n key: \"value\",\n get: function get() {\n var expired = this.expiredAt && this.expiredAt <= Date.now();\n if (expired) debug(\"expired: \".concat(this.originalValue));\n return expired ? EXPIRED : this.originalValue;\n }\n }]);\n\n return Expirable;\n}();\nExpirable.EXPIRED = EXPIRED;\n\nvar debug$1 = d('LC:Cache');\n\nvar Cache = /*#__PURE__*/function () {\n function Cache() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'anonymous';\n this.name = name;\n this._map = {};\n }\n\n var _proto = Cache.prototype;\n\n _proto.get = function get(key) {\n var cache = this._map[key];\n\n if (cache) {\n var value = cache.value;\n\n if (value !== Expirable.EXPIRED) {\n debug$1('[%s] hit: %s', this.name, key);\n return value;\n }\n\n delete this._map[key];\n }\n\n debug$1(\"[\".concat(this.name, \"] missed: \").concat(key));\n return null;\n };\n\n _proto.set = function set(key, value, ttl) {\n debug$1('[%s] set: %s %d', this.name, key, ttl);\n this._map[key] = new Expirable(value, ttl);\n };\n\n return Cache;\n}();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\n * 调试日志控制器\n * @const\n * @memberof module:leancloud-realtime\n * @example\n * debug.enable(); // 启用调试日志\n * debug.disable(); // 关闭调试日志\n */\n\nvar debug$2 = {\n enable: function enable() {\n var namespaces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'LC*';\n return d.enable(namespaces);\n },\n disable: d.disable\n};\nvar tryAll = function tryAll(promiseConstructors) {\n var promise = new Promise(promiseConstructors[0]);\n\n if (promiseConstructors.length === 1) {\n return promise;\n }\n\n return promise[\"catch\"](function () {\n return tryAll(promiseConstructors.slice(1));\n });\n}; // eslint-disable-next-line no-sequences\n\nvar tap = function tap(interceptor) {\n return function (value) {\n return interceptor(value), value;\n };\n};\nvar isIE10 = global$1.navigator && global$1.navigator.userAgent && global$1.navigator.userAgent.indexOf('MSIE 10.') !== -1;\nvar map = new WeakMap(); // protected property helper\n\nvar internal = function internal(object) {\n if (!map.has(object)) {\n map.set(object, {});\n }\n\n return map.get(object);\n};\nvar compact = function compact(obj, filter) {\n if (!isPlainObject(obj)) return obj;\n\n var object = _objectSpread({}, obj);\n\n Object.keys(object).forEach(function (prop) {\n var value = object[prop];\n\n if (value === filter) {\n delete object[prop];\n } else {\n object[prop] = compact(value, filter);\n }\n });\n return object;\n}; // debug utility\n\nvar removeNull = function removeNull(obj) {\n return compact(obj, null);\n};\n\nvar trim = function trim(message) {\n return removeNull(JSON.parse(JSON.stringify(message)));\n};\nvar ensureArray = function ensureArray(target) {\n if (Array.isArray(target)) {\n return target;\n }\n\n if (target === undefined || target === null) {\n return [];\n }\n\n return [target];\n};\nvar isWeapp = // eslint-disable-next-line no-undef\n(typeof wx === \"undefined\" ? \"undefined\" : _typeof(wx)) === 'object' && typeof wx.connectSocket === 'function'; // throttle decorator\nvar isCNApp = function isCNApp(appId) {\n return appId.slice(-9) !== '-MdYXbMMI';\n};\nvar equalBuffer = function equalBuffer(buffer1, buffer2) {\n if (!buffer1 || !buffer2) return false;\n if (buffer1.byteLength !== buffer2.byteLength) return false;\n var a = new Uint8Array(buffer1);\n var b = new Uint8Array(buffer2);\n return !a.some(function (value, index) {\n return value !== b[index];\n });\n};\n\nvar _class;\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar debug$3 = d('LC:WebSocketPlus');\nvar OPEN = 'open';\nvar DISCONNECT = 'disconnect';\nvar RECONNECT = 'reconnect';\nvar RETRY = 'retry';\nvar SCHEDULE = 'schedule';\nvar OFFLINE = 'offline';\nvar ONLINE = 'online';\nvar ERROR = 'error';\nvar MESSAGE = 'message';\nvar HEARTBEAT_TIME = 180000;\nvar TIMEOUT_TIME = 380000;\n\nvar DEFAULT_RETRY_STRATEGY = function DEFAULT_RETRY_STRATEGY(attempt) {\n return Math.min(1000 * Math.pow(2, attempt), 300000);\n};\n\nvar requireConnected = function requireConnected(target, name, descriptor) {\n return _objectSpread$1(_objectSpread$1({}, descriptor), {}, {\n value: function requireConnectedWrapper() {\n var _descriptor$value;\n\n this.checkConnectionAvailability(name);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_descriptor$value = descriptor.value).call.apply(_descriptor$value, [this].concat(args));\n }\n });\n};\n\nvar WebSocketPlus = (_class = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(WebSocketPlus, _EventEmitter);\n\n _createClass(WebSocketPlus, [{\n key: \"urls\",\n get: function get() {\n return this._urls;\n },\n set: function set(urls) {\n this._urls = ensureArray(urls);\n }\n }]);\n\n function WebSocketPlus(getUrls, protocol) {\n var _this;\n\n _this = _EventEmitter.call(this) || this;\n\n _this.init();\n\n _this._protocol = protocol;\n Promise.resolve(typeof getUrls === 'function' ? getUrls() : getUrls).then(ensureArray).then(function (urls) {\n _this._urls = urls;\n return _this._open();\n }).then(function () {\n _this.__postponeTimeoutTimer = _this._postponeTimeoutTimer.bind(_assertThisInitialized(_this));\n\n if (global$1.addEventListener) {\n _this.__pause = function () {\n if (_this.can('pause')) _this.pause();\n };\n\n _this.__resume = function () {\n if (_this.can('resume')) _this.resume();\n };\n\n global$1.addEventListener('offline', _this.__pause);\n global$1.addEventListener('online', _this.__resume);\n }\n\n _this.open();\n })[\"catch\"](_this[\"throw\"].bind(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = WebSocketPlus.prototype;\n\n _proto._open = function _open() {\n var _this2 = this;\n\n return this._createWs(this._urls, this._protocol).then(function (ws) {\n var _this2$_urls = _toArray(_this2._urls),\n first = _this2$_urls[0],\n reset = _this2$_urls.slice(1);\n\n _this2._urls = [].concat(_toConsumableArray(reset), [first]);\n return ws;\n });\n };\n\n _proto._createWs = function _createWs(urls, protocol) {\n var _this3 = this;\n\n return tryAll(urls.map(function (url) {\n return function (resolve, reject) {\n debug$3(\"connect [\".concat(url, \"] \").concat(protocol));\n var WebSocket = getAdapter('WebSocket');\n var ws = protocol ? new WebSocket(url, protocol) : new WebSocket(url);\n ws.binaryType = _this3.binaryType || 'arraybuffer';\n\n ws.onopen = function () {\n return resolve(ws);\n };\n\n ws.onclose = function (error) {\n if (error instanceof Error) {\n return reject(error);\n } // in browser, error event is useless\n\n\n return reject(new Error(\"Failed to connect [\".concat(url, \"]\")));\n };\n\n ws.onerror = ws.onclose;\n };\n })).then(function (ws) {\n _this3._ws = ws;\n _this3._ws.onclose = _this3._handleClose.bind(_this3);\n _this3._ws.onmessage = _this3._handleMessage.bind(_this3);\n return ws;\n });\n };\n\n _proto._destroyWs = function _destroyWs() {\n var ws = this._ws;\n if (!ws) return;\n ws.onopen = null;\n ws.onclose = null;\n ws.onerror = null;\n ws.onmessage = null;\n this._ws = null;\n ws.close();\n } // eslint-disable-next-line class-methods-use-this\n ;\n\n _proto.onbeforeevent = function onbeforeevent(event, from, to) {\n for (var _len2 = arguments.length, payload = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n payload[_key2 - 3] = arguments[_key2];\n }\n\n debug$3(\"\".concat(event, \": \").concat(from, \" -> \").concat(to, \" %o\"), payload);\n };\n\n _proto.onopen = function onopen() {\n this.emit(OPEN);\n };\n\n _proto.onconnected = function onconnected() {\n this._startConnectionKeeper();\n };\n\n _proto.onleaveconnected = function onleaveconnected(event, from, to) {\n this._stopConnectionKeeper();\n\n this._destroyWs();\n\n if (to === 'offline' || to === 'disconnected') {\n this.emit(DISCONNECT);\n }\n };\n\n _proto.onpause = function onpause() {\n this.emit(OFFLINE);\n };\n\n _proto.onbeforeresume = function onbeforeresume() {\n this.emit(ONLINE);\n };\n\n _proto.onreconnect = function onreconnect() {\n this.emit(RECONNECT);\n };\n\n _proto.ondisconnected = function ondisconnected(event, from, to) {\n var _this4 = this;\n\n var attempt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var delay = from === OFFLINE ? 0 : DEFAULT_RETRY_STRATEGY.call(null, attempt);\n debug$3(\"schedule attempt=\".concat(attempt, \" delay=\").concat(delay));\n this.emit(SCHEDULE, attempt, delay);\n\n if (this.__scheduledRetry) {\n clearTimeout(this.__scheduledRetry);\n }\n\n this.__scheduledRetry = setTimeout(function () {\n if (_this4.is('disconnected')) {\n _this4.retry(attempt);\n }\n }, delay);\n };\n\n _proto.onretry = function onretry(event, from, to) {\n var _this5 = this;\n\n var attempt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n this.emit(RETRY, attempt);\n\n this._open().then(function () {\n return _this5.can('reconnect') && _this5.reconnect();\n }, function () {\n return _this5.can('fail') && _this5.fail(attempt + 1);\n });\n };\n\n _proto.onerror = function onerror(event, from, to, error) {\n this.emit(ERROR, error);\n };\n\n _proto.onclose = function onclose() {\n if (global$1.removeEventListener) {\n if (this.__pause) global$1.removeEventListener('offline', this.__pause);\n if (this.__resume) global$1.removeEventListener('online', this.__resume);\n }\n };\n\n _proto.checkConnectionAvailability = function checkConnectionAvailability() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'API';\n\n if (!this.is('connected')) {\n var currentState = this.current;\n console.warn(\"\".concat(name, \" should not be called when the connection is \").concat(currentState));\n\n if (this.is('disconnected') || this.is('reconnecting')) {\n console.warn('disconnect and reconnect event should be handled to avoid such calls.');\n }\n\n throw new Error('Connection unavailable');\n }\n } // jsdoc-ignore-start\n ;\n\n _proto. // jsdoc-ignore-end\n _ping = function _ping() {\n debug$3('ping');\n\n try {\n this.ping();\n } catch (error) {\n console.warn(\"websocket ping error: \".concat(error.message));\n }\n };\n\n _proto.ping = function ping() {\n if (this._ws.ping) {\n this._ws.ping();\n } else {\n console.warn(\"The WebSocket implement does not support sending ping frame.\\n Override ping method to use application defined ping/pong mechanism.\");\n }\n };\n\n _proto._postponeTimeoutTimer = function _postponeTimeoutTimer() {\n var _this6 = this;\n\n debug$3('_postponeTimeoutTimer');\n\n this._clearTimeoutTimers();\n\n this._timeoutTimer = setTimeout(function () {\n debug$3('timeout');\n\n _this6.disconnect();\n }, TIMEOUT_TIME);\n };\n\n _proto._clearTimeoutTimers = function _clearTimeoutTimers() {\n if (this._timeoutTimer) {\n clearTimeout(this._timeoutTimer);\n }\n };\n\n _proto._startConnectionKeeper = function _startConnectionKeeper() {\n debug$3('start connection keeper');\n this._heartbeatTimer = setInterval(this._ping.bind(this), HEARTBEAT_TIME);\n var addListener = this._ws.addListener || this._ws.addEventListener;\n\n if (!addListener) {\n debug$3('connection keeper disabled due to the lack of #addEventListener.');\n return;\n }\n\n addListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n addListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n\n this._postponeTimeoutTimer();\n };\n\n _proto._stopConnectionKeeper = function _stopConnectionKeeper() {\n debug$3('stop connection keeper'); // websockets/ws#489\n\n var removeListener = this._ws.removeListener || this._ws.removeEventListener;\n\n if (removeListener) {\n removeListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n removeListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n\n this._clearTimeoutTimers();\n }\n\n if (this._heartbeatTimer) {\n clearInterval(this._heartbeatTimer);\n }\n };\n\n _proto._handleClose = function _handleClose(event) {\n debug$3(\"ws closed [\".concat(event.code, \"] \").concat(event.reason)); // socket closed manually, ignore close event.\n\n if (this.isFinished()) return;\n this.handleClose(event);\n };\n\n _proto.handleClose = function handleClose() {\n // reconnect\n this.disconnect();\n } // jsdoc-ignore-start\n ;\n\n _proto. // jsdoc-ignore-end\n send = function send(data) {\n debug$3('send', data);\n\n this._ws.send(data);\n };\n\n _proto._handleMessage = function _handleMessage(event) {\n debug$3('message', event.data);\n this.handleMessage(event.data);\n };\n\n _proto.handleMessage = function handleMessage(message) {\n this.emit(MESSAGE, message);\n };\n\n return WebSocketPlus;\n}(EventEmitter), (_applyDecoratedDescriptor(_class.prototype, \"_ping\", [requireConnected], Object.getOwnPropertyDescriptor(_class.prototype, \"_ping\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"send\", [requireConnected], Object.getOwnPropertyDescriptor(_class.prototype, \"send\"), _class.prototype)), _class);\nStateMachine.create({\n target: WebSocketPlus.prototype,\n initial: {\n state: 'initialized',\n event: 'init',\n defer: true\n },\n terminal: 'closed',\n events: [{\n name: 'open',\n from: 'initialized',\n to: 'connected'\n }, {\n name: 'disconnect',\n from: 'connected',\n to: 'disconnected'\n }, {\n name: 'retry',\n from: 'disconnected',\n to: 'reconnecting'\n }, {\n name: 'fail',\n from: 'reconnecting',\n to: 'disconnected'\n }, {\n name: 'reconnect',\n from: 'reconnecting',\n to: 'connected'\n }, {\n name: 'pause',\n from: ['connected', 'disconnected', 'reconnecting'],\n to: 'offline'\n }, {}, {\n name: 'resume',\n from: 'offline',\n to: 'disconnected'\n }, {\n name: 'close',\n from: ['connected', 'disconnected', 'reconnecting', 'offline'],\n to: 'closed'\n }, {\n name: 'throw',\n from: '*',\n to: 'error'\n }]\n});\n\nvar error = Object.freeze({\n 1000: {\n name: 'CLOSE_NORMAL'\n },\n 1006: {\n name: 'CLOSE_ABNORMAL'\n },\n 4100: {\n name: 'APP_NOT_AVAILABLE',\n message: 'App not exists or realtime message service is disabled.'\n },\n 4102: {\n name: 'SIGNATURE_FAILED',\n message: 'Login signature mismatch.'\n },\n 4103: {\n name: 'INVALID_LOGIN',\n message: 'Malformed clientId.'\n },\n 4105: {\n name: 'SESSION_REQUIRED',\n message: 'Message sent before session opened.'\n },\n 4107: {\n name: 'READ_TIMEOUT'\n },\n 4108: {\n name: 'LOGIN_TIMEOUT'\n },\n 4109: {\n name: 'FRAME_TOO_LONG'\n },\n 4110: {\n name: 'INVALID_ORIGIN',\n message: 'Access denied by domain whitelist.'\n },\n 4111: {\n name: 'SESSION_CONFLICT'\n },\n 4112: {\n name: 'SESSION_TOKEN_EXPIRED'\n },\n 4113: {\n name: 'APP_QUOTA_EXCEEDED',\n message: 'The daily active users limit exceeded.'\n },\n 4116: {\n name: 'MESSAGE_SENT_QUOTA_EXCEEDED',\n message: 'Command sent too fast.'\n },\n 4200: {\n name: 'INTERNAL_ERROR',\n message: 'Internal error, please contact LeanCloud for support.'\n },\n 4301: {\n name: 'CONVERSATION_API_FAILED',\n message: 'Upstream Conversatoin API failed, see error.detail for details.'\n },\n 4302: {\n name: 'CONVERSATION_SIGNATURE_FAILED',\n message: 'Conversation action signature mismatch.'\n },\n 4303: {\n name: 'CONVERSATION_NOT_FOUND'\n },\n 4304: {\n name: 'CONVERSATION_FULL'\n },\n 4305: {\n name: 'CONVERSATION_REJECTED_BY_APP',\n message: 'Conversation action rejected by hook.'\n },\n 4306: {\n name: 'CONVERSATION_UPDATE_FAILED'\n },\n 4307: {\n name: 'CONVERSATION_READ_ONLY'\n },\n 4308: {\n name: 'CONVERSATION_NOT_ALLOWED'\n },\n 4309: {\n name: 'CONVERSATION_UPDATE_REJECTED',\n message: 'Conversation update rejected because the client is not a member.'\n },\n 4310: {\n name: 'CONVERSATION_QUERY_FAILED',\n message: 'Conversation query failed because it is too expansive.'\n },\n 4311: {\n name: 'CONVERSATION_LOG_FAILED'\n },\n 4312: {\n name: 'CONVERSATION_LOG_REJECTED',\n message: 'Message query rejected because the client is not a member of the conversation.'\n },\n 4313: {\n name: 'SYSTEM_CONVERSATION_REQUIRED'\n },\n 4314: {\n name: 'NORMAL_CONVERSATION_REQUIRED'\n },\n 4315: {\n name: 'CONVERSATION_BLACKLISTED',\n message: 'Blacklisted in the conversation.'\n },\n 4316: {\n name: 'TRANSIENT_CONVERSATION_REQUIRED'\n },\n 4317: {\n name: 'CONVERSATION_MEMBERSHIP_REQUIRED'\n },\n 4318: {\n name: 'CONVERSATION_API_QUOTA_EXCEEDED',\n message: 'LeanCloud API quota exceeded. You may upgrade your plan.'\n },\n 4323: {\n name: 'TEMPORARY_CONVERSATION_EXPIRED',\n message: 'Temporary conversation expired or does not exist.'\n },\n 4401: {\n name: 'INVALID_MESSAGING_TARGET',\n message: 'Conversation does not exist or client is not a member.'\n },\n 4402: {\n name: 'MESSAGE_REJECTED_BY_APP',\n message: 'Message rejected by hook.'\n },\n 4403: {\n name: 'MESSAGE_OWNERSHIP_REQUIRED'\n },\n 4404: {\n name: 'MESSAGE_NOT_FOUND'\n },\n 4405: {\n name: 'MESSAGE_UPDATE_REJECTED_BY_APP',\n message: 'Message update rejected by hook.'\n },\n 4406: {\n name: 'MESSAGE_EDIT_DISABLED'\n },\n 4407: {\n name: 'MESSAGE_RECALL_DISABLED'\n },\n 5130: {\n name: 'OWNER_PROMOTION_NOT_ALLOWED',\n message: \"Updating a member's role to owner is not allowed.\"\n }\n});\nvar ErrorCode = Object.freeze(Object.keys(error).reduce(function (result, code) {\n return Object.assign(result, _defineProperty({}, error[code].name, Number(code)));\n}, {}));\nvar createError = function createError(_ref) {\n var code = _ref.code,\n reason = _ref.reason,\n appCode = _ref.appCode,\n detail = _ref.detail,\n errorMessage = _ref.error;\n var message = reason || detail || errorMessage;\n var name = reason;\n\n if (!message && error[code]) {\n name = error[code].name;\n message = error[code].message || name;\n }\n\n if (!message) {\n message = \"Unknow Error: \".concat(code);\n }\n\n var err = new Error(message);\n return Object.assign(err, {\n code: code,\n appCode: appCode,\n detail: detail,\n name: name\n });\n};\n\nvar debug$4 = d('LC:Connection');\nvar COMMAND_TIMEOUT = 20000;\nvar EXPIRE = Symbol('expire');\n\nvar isIdempotentCommand = function isIdempotentCommand(command) {\n return !(command.cmd === CommandType.direct || command.cmd === CommandType.session && command.op === OpType.open || command.cmd === CommandType.conv && (command.op === OpType.start || command.op === OpType.update || command.op === OpType.members));\n};\n\nvar Connection = /*#__PURE__*/function (_WebSocketPlus) {\n _inheritsLoose(Connection, _WebSocketPlus);\n\n function Connection(getUrl, _ref) {\n var _this;\n\n var format = _ref.format,\n version = _ref.version;\n debug$4('initializing Connection');\n var protocolString = \"lc.\".concat(format, \".\").concat(version);\n _this = _WebSocketPlus.call(this, getUrl, protocolString) || this;\n _this._protocolFormat = format;\n _this._commands = {};\n _this._serialId = 0;\n return _this;\n }\n\n var _proto = Connection.prototype;\n\n _proto.send = /*#__PURE__*/function () {\n var _send = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(command) {\n var _this2 = this;\n\n var waitingForRespond,\n buffer,\n serialId,\n duplicatedCommand,\n message,\n promise,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n waitingForRespond = _args.length > 1 && _args[1] !== undefined ? _args[1] : true;\n\n if (!waitingForRespond) {\n _context.next = 11;\n break;\n }\n\n if (!isIdempotentCommand(command)) {\n _context.next = 8;\n break;\n }\n\n buffer = command.toArrayBuffer();\n duplicatedCommand = values(this._commands).find(function (_ref2) {\n var targetBuffer = _ref2.buffer,\n targetCommand = _ref2.command;\n return targetCommand.cmd === command.cmd && targetCommand.op === command.op && equalBuffer(targetBuffer, buffer);\n });\n\n if (!duplicatedCommand) {\n _context.next = 8;\n break;\n }\n\n console.warn(\"Duplicated command [cmd:\".concat(command.cmd, \" op:\").concat(command.op, \"] is throttled.\"));\n return _context.abrupt(\"return\", duplicatedCommand.promise);\n\n case 8:\n this._serialId += 1;\n serialId = this._serialId;\n command.i = serialId; // eslint-disable-line no-param-reassign\n\n case 11:\n if (debug$4.enabled) debug$4('↑ %O sent', trim(command));\n\n if (this._protocolFormat === 'proto2base64') {\n message = command.toBase64();\n } else if (command.toArrayBuffer) {\n message = command.toArrayBuffer();\n }\n\n if (message) {\n _context.next = 15;\n break;\n }\n\n throw new TypeError(\"\".concat(command, \" is not a GenericCommand\"));\n\n case 15:\n _WebSocketPlus.prototype.send.call(this, message);\n\n if (waitingForRespond) {\n _context.next = 18;\n break;\n }\n\n return _context.abrupt(\"return\", undefined);\n\n case 18:\n promise = new Promise(function (resolve, reject) {\n _this2._commands[serialId] = {\n command: command,\n buffer: buffer,\n resolve: resolve,\n reject: reject,\n timeout: setTimeout(function () {\n if (_this2._commands[serialId]) {\n if (debug$4.enabled) debug$4('✗ %O timeout', trim(command));\n reject(createError({\n error: \"Command Timeout [cmd:\".concat(command.cmd, \" op:\").concat(command.op, \"]\"),\n name: 'COMMAND_TIMEOUT'\n }));\n delete _this2._commands[serialId];\n }\n }, COMMAND_TIMEOUT)\n };\n });\n this._commands[serialId].promise = promise;\n return _context.abrupt(\"return\", promise);\n\n case 21:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function send(_x) {\n return _send.apply(this, arguments);\n }\n\n return send;\n }();\n\n _proto.handleMessage = function handleMessage(msg) {\n var message;\n\n try {\n message = GenericCommand.decode(msg);\n if (debug$4.enabled) debug$4('↓ %O received', trim(message));\n } catch (e) {\n console.warn('Decode message failed:', e.message, msg);\n return;\n }\n\n var serialId = message.i;\n\n if (serialId) {\n if (this._commands[serialId]) {\n clearTimeout(this._commands[serialId].timeout);\n\n if (message.cmd === CommandType.error) {\n this._commands[serialId].reject(createError(message.errorMessage));\n } else {\n this._commands[serialId].resolve(message);\n }\n\n delete this._commands[serialId];\n } else {\n console.warn(\"Unexpected command received with serialId [\".concat(serialId, \"],\\n which have timed out or never been requested.\"));\n }\n } else {\n switch (message.cmd) {\n case CommandType.error:\n {\n this.emit(ERROR, createError(message.errorMessage));\n return;\n }\n\n case CommandType.goaway:\n {\n this.emit(EXPIRE);\n return;\n }\n\n default:\n {\n this.emit(MESSAGE, message);\n }\n }\n }\n };\n\n _proto.ping = function ping() {\n return this.send(new GenericCommand({\n cmd: CommandType.echo\n }))[\"catch\"](function (error) {\n return debug$4('ping failed:', error);\n });\n };\n\n return Connection;\n}(WebSocketPlus);\n\nvar debug$5 = d('LC:request');\nvar request = (function (_ref) {\n var _ref$method = _ref.method,\n method = _ref$method === void 0 ? 'GET' : _ref$method,\n _url = _ref.url,\n query = _ref.query,\n headers = _ref.headers,\n data = _ref.data,\n time = _ref.timeout;\n var url = _url;\n\n if (query) {\n var queryString = Object.keys(query).map(function (key) {\n var value = query[key];\n if (value === undefined) return undefined;\n var v = isPlainObject(value) ? JSON.stringify(value) : value;\n return \"\".concat(encodeURIComponent(key), \"=\").concat(encodeURIComponent(v));\n }).filter(function (qs) {\n return qs;\n }).join('&');\n url = \"\".concat(url, \"?\").concat(queryString);\n }\n\n debug$5('Req: %O %O %O', method, url, {\n headers: headers,\n data: data\n });\n var request = getAdapter('request');\n var promise = request(url, {\n method: method,\n headers: headers,\n data: data\n }).then(function (response) {\n if (response.ok === false) {\n var error = createError(response.data);\n error.response = response;\n throw error;\n }\n\n debug$5('Res: %O %O %O', url, response.status, response.data);\n return response.data;\n })[\"catch\"](function (error) {\n if (error.response) {\n debug$5('Error: %O %O %O', url, error.response.status, error.response.data);\n }\n\n throw error;\n });\n return time ? promiseTimeout.timeout(promise, time) : promise;\n});\n\nvar applyDecorators = function applyDecorators(decorators, target) {\n if (decorators) {\n decorators.forEach(function (decorator) {\n try {\n decorator(target);\n } catch (error) {\n if (decorator._pluginName) {\n error.message += \"[\".concat(decorator._pluginName, \"]\");\n }\n\n throw error;\n }\n });\n }\n};\nvar applyDispatcher = function applyDispatcher(dispatchers, payload) {\n return ensureArray(dispatchers).reduce(function (resultPromise, dispatcher) {\n return resultPromise.then(function (shouldDispatch) {\n return shouldDispatch === false ? false : dispatcher.apply(void 0, _toConsumableArray(payload));\n })[\"catch\"](function (error) {\n if (dispatcher._pluginName) {\n // eslint-disable-next-line no-param-reassign\n error.message += \"[\".concat(dispatcher._pluginName, \"]\");\n }\n\n throw error;\n });\n }, Promise.resolve(true));\n};\n\nvar version = \"5.0.0-rc.4\";\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar debug$6 = d('LC:Realtime');\nvar routerCache = new Cache('push-router');\nvar initializedApp = {};\n\nvar Realtime = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(Realtime, _EventEmitter);\n\n /**\n * @extends EventEmitter\n * @param {Object} options\n * @param {String} options.appId\n * @param {String} options.appKey (since 4.0.0)\n * @param {String|Object} [options.server] 指定服务器域名,中国节点应用此参数必填(since 4.0.0)\n * @param {Boolean} [options.pushOfflineMessages=false] 启用推送离线消息模式(默认为发送未读消息通知模式)\n * @param {Boolean} [options.noBinary=false] 设置 WebSocket 使用字符串格式收发消息(默认为二进制格式)。\n * 适用于 WebSocket 实现不支持二进制数据格式的情况\n * @param {Boolean} [options.ssl=true] 使用 wss 进行连接\n * @param {String|String[]} [options.RTMServers] 指定私有部署的 RTM 服务器地址(since 4.0.0)\n * @param {Plugin[]} [options.plugins] 加载插件(since 3.1.0)\n */\n function Realtime(_ref) {\n var _this2;\n\n var plugins = _ref.plugins,\n options = _objectWithoutProperties(_ref, [\"plugins\"]);\n\n debug$6('initializing Realtime %s %O', version, options);\n _this2 = _EventEmitter.call(this) || this;\n var appId = options.appId;\n\n if (typeof appId !== 'string') {\n throw new TypeError(\"appId [\".concat(appId, \"] is not a string\"));\n }\n\n if (initializedApp[appId]) {\n throw new Error(\"App [\".concat(appId, \"] is aleady initialized.\"));\n }\n\n initializedApp[appId] = true;\n\n if (typeof options.appKey !== 'string') {\n throw new TypeError(\"appKey [\".concat(options.appKey, \"] is not a string\"));\n }\n\n if (isCNApp(appId)) {\n if (!options.server) {\n throw new TypeError(\"server option is required for apps from CN region\");\n }\n }\n\n _this2._options = _objectSpread$2({\n appId: undefined,\n appKey: undefined,\n pushOfflineMessages: false,\n noBinary: false,\n ssl: true,\n RTMServerName: typeof process !== 'undefined' ? process.env.RTM_SERVER_NAME : undefined\n }, options);\n _this2._cache = new Cache('endpoints');\n\n var _this = internal(_assertThisInitialized(_this2));\n\n _this.clients = new Set();\n _this.pendingClients = new Set();\n var mergedPlugins = [].concat(_toConsumableArray(ensureArray(Realtime.__preRegisteredPlugins)), _toConsumableArray(ensureArray(plugins)));\n debug$6('Using plugins %o', mergedPlugins.map(function (plugin) {\n return plugin.name;\n }));\n _this2._plugins = mergedPlugins.reduce(function (result, plugin) {\n Object.keys(plugin).forEach(function (hook) {\n if ({}.hasOwnProperty.call(plugin, hook) && hook !== 'name') {\n if (plugin.name) {\n ensureArray(plugin[hook]).forEach(function (value) {\n // eslint-disable-next-line no-param-reassign\n value._pluginName = plugin.name;\n });\n } // eslint-disable-next-line no-param-reassign\n\n\n result[hook] = ensureArray(result[hook]).concat(plugin[hook]);\n }\n });\n return result;\n }, {}); // onRealtimeCreate hook\n\n applyDecorators(_this2._plugins.onRealtimeCreate, _assertThisInitialized(_this2));\n return _this2;\n }\n\n var _proto = Realtime.prototype;\n\n _proto._request = /*#__PURE__*/function () {\n var _request2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2) {\n var method, _url, _ref2$version, version, path, query, headers, data, url, _this$_options, appId, server, _yield$this$construct, api;\n\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n method = _ref2.method, _url = _ref2.url, _ref2$version = _ref2.version, version = _ref2$version === void 0 ? '1.1' : _ref2$version, path = _ref2.path, query = _ref2.query, headers = _ref2.headers, data = _ref2.data;\n url = _url;\n\n if (url) {\n _context.next = 9;\n break;\n }\n\n _this$_options = this._options, appId = _this$_options.appId, server = _this$_options.server;\n _context.next = 6;\n return this.constructor._getServerUrls({\n appId: appId,\n server: server\n });\n\n case 6:\n _yield$this$construct = _context.sent;\n api = _yield$this$construct.api;\n url = \"\".concat(api, \"/\").concat(version).concat(path);\n\n case 9:\n return _context.abrupt(\"return\", request({\n url: url,\n method: method,\n query: query,\n headers: _objectSpread$2({\n 'X-LC-Id': this._options.appId,\n 'X-LC-Key': this._options.appKey\n }, headers),\n data: data\n }));\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _request(_x) {\n return _request2.apply(this, arguments);\n }\n\n return _request;\n }();\n\n _proto._open = function _open() {\n var _this3 = this;\n\n if (this._openPromise) return this._openPromise;\n var format = 'protobuf2';\n\n if (this._options.noBinary) {\n // 不发送 binary data,fallback to base64 string\n format = 'proto2base64';\n }\n\n var version = 3;\n\n if (this._options.pushOfflineMessages) {\n // 不推送离线消息,而是发送对话的未读通知\n version = 1;\n }\n\n var protocol = {\n format: format,\n version: version\n };\n this._openPromise = new Promise(function (resolve, reject) {\n debug$6('No connection established, create a new one.');\n var connection = new Connection(function () {\n return _this3._getRTMServers(_this3._options);\n }, protocol);\n connection.on(OPEN, function () {\n return resolve(connection);\n }).on(ERROR, reject).on(EXPIRE, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n debug$6('Connection expired. Refresh endpoints.');\n\n _this3._cache.set('endpoints', null, 0);\n\n _context2.next = 4;\n return _this3._getRTMServers(_this3._options);\n\n case 4:\n connection.urls = _context2.sent;\n connection.disconnect();\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))).on(MESSAGE, _this3._dispatchCommand.bind(_this3));\n /**\n * 连接断开。\n * 连接断开可能是因为 SDK 进入了离线状态(see {@link Realtime#event:OFFLINE}),或长时间没有收到服务器心跳。\n * 连接断开后所有的网络操作都会失败,请在连接断开后禁用相关的 UI 元素。\n * @event Realtime#DISCONNECT\n */\n\n /**\n * 计划在一段时间后尝试重新连接\n * @event Realtime#SCHEDULE\n * @param {Number} attempt 尝试重连的次数\n * @param {Number} delay 延迟的毫秒数\n */\n\n /**\n * 正在尝试重新连接\n * @event Realtime#RETRY\n * @param {Number} attempt 尝试重连的次数\n */\n\n /**\n * 连接恢复正常。\n * 请重新启用在 {@link Realtime#event:DISCONNECT} 事件中禁用的相关 UI 元素\n * @event Realtime#RECONNECT\n */\n\n /**\n * 客户端连接断开\n * @event IMClient#DISCONNECT\n * @see Realtime#event:DISCONNECT\n * @since 3.2.0\n */\n\n /**\n * 计划在一段时间后尝试重新连接\n * @event IMClient#SCHEDULE\n * @param {Number} attempt 尝试重连的次数\n * @param {Number} delay 延迟的毫秒数\n * @since 3.2.0\n */\n\n /**\n * 正在尝试重新连接\n * @event IMClient#RETRY\n * @param {Number} attempt 尝试重连的次数\n * @since 3.2.0\n */\n\n /**\n * 客户端进入离线状态。\n * 这通常意味着网络已断开,或者 {@link Realtime#pause} 被调用\n * @event Realtime#OFFLINE\n * @since 3.4.0\n */\n\n /**\n * 客户端恢复在线状态\n * 这通常意味着网络已恢复,或者 {@link Realtime#resume} 被调用\n * @event Realtime#ONLINE\n * @since 3.4.0\n */\n\n /**\n * 进入离线状态。\n * 这通常意味着网络已断开,或者 {@link Realtime#pause} 被调用\n * @event IMClient#OFFLINE\n * @since 3.4.0\n */\n\n /**\n * 恢复在线状态\n * 这通常意味着网络已恢复,或者 {@link Realtime#resume} 被调用\n * @event IMClient#ONLINE\n * @since 3.4.0\n */\n // event proxy\n\n [DISCONNECT, RECONNECT, RETRY, SCHEDULE, OFFLINE, ONLINE].forEach(function (event) {\n return connection.on(event, function () {\n for (var _len = arguments.length, payload = new Array(_len), _key = 0; _key < _len; _key++) {\n payload[_key] = arguments[_key];\n }\n\n debug$6(\"\".concat(event, \" event emitted. %o\"), payload);\n\n _this3.emit.apply(_this3, [event].concat(payload));\n\n if (event !== RECONNECT) {\n internal(_this3).clients.forEach(function (client) {\n client.emit.apply(client, [event].concat(payload));\n });\n }\n });\n }); // override handleClose\n\n connection.handleClose = function handleClose(event) {\n var isFatal = [ErrorCode.APP_NOT_AVAILABLE, ErrorCode.INVALID_LOGIN, ErrorCode.INVALID_ORIGIN].some(function (errorCode) {\n return errorCode === event.code;\n });\n\n if (isFatal) {\n // in these cases, SDK should throw.\n this[\"throw\"](createError(event));\n } else {\n // reconnect\n this.disconnect();\n }\n };\n\n internal(_this3).connection = connection;\n });\n return this._openPromise;\n };\n\n _proto._getRTMServers = /*#__PURE__*/function () {\n var _getRTMServers2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(options) {\n var info, cachedEndPoints, _info, server, secondary, ttl;\n\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!options.RTMServers) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\", shuffle(ensureArray(options.RTMServers)));\n\n case 2:\n cachedEndPoints = this._cache.get('endpoints');\n\n if (!cachedEndPoints) {\n _context3.next = 7;\n break;\n }\n\n info = cachedEndPoints;\n _context3.next = 14;\n break;\n\n case 7:\n _context3.next = 9;\n return this.constructor._fetchRTMServers(options);\n\n case 9:\n info = _context3.sent;\n _info = info, server = _info.server, secondary = _info.secondary, ttl = _info.ttl;\n\n if (!(typeof server !== 'string' && typeof secondary !== 'string' && typeof ttl !== 'number')) {\n _context3.next = 13;\n break;\n }\n\n throw new Error(\"malformed RTM route response: \".concat(JSON.stringify(info)));\n\n case 13:\n this._cache.set('endpoints', info, info.ttl * 1000);\n\n case 14:\n debug$6('endpoint info: %O', info);\n return _context3.abrupt(\"return\", [info.server, info.secondary]);\n\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _getRTMServers(_x2) {\n return _getRTMServers2.apply(this, arguments);\n }\n\n return _getRTMServers;\n }();\n\n Realtime._getServerUrls = /*#__PURE__*/function () {\n var _getServerUrls2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref4) {\n var appId, server, cachedRouter, defaultProtocol;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n appId = _ref4.appId, server = _ref4.server;\n debug$6('fetch server urls');\n\n if (!server) {\n _context4.next = 6;\n break;\n }\n\n if (!(typeof server !== 'string')) {\n _context4.next = 5;\n break;\n }\n\n return _context4.abrupt(\"return\", server);\n\n case 5:\n return _context4.abrupt(\"return\", {\n RTMRouter: server,\n api: server\n });\n\n case 6:\n cachedRouter = routerCache.get(appId);\n\n if (!cachedRouter) {\n _context4.next = 9;\n break;\n }\n\n return _context4.abrupt(\"return\", cachedRouter);\n\n case 9:\n defaultProtocol = 'https://';\n return _context4.abrupt(\"return\", request({\n url: 'https://app-router.com/2/route',\n query: {\n appId: appId\n },\n timeout: 20000\n }).then(tap(debug$6)).then(function (_ref5) {\n var RTMRouterServer = _ref5.rtm_router_server,\n APIServer = _ref5.api_server,\n _ref5$ttl = _ref5.ttl,\n ttl = _ref5$ttl === void 0 ? 3600 : _ref5$ttl;\n\n if (!RTMRouterServer) {\n throw new Error('rtm router not exists');\n }\n\n var serverUrls = {\n RTMRouter: \"\".concat(defaultProtocol).concat(RTMRouterServer),\n api: \"\".concat(defaultProtocol).concat(APIServer)\n };\n routerCache.set(appId, serverUrls, ttl * 1000);\n return serverUrls;\n })[\"catch\"](function () {\n var id = appId.slice(0, 8).toLowerCase();\n var domain = 'lncldglobal.com';\n return {\n RTMRouter: \"\".concat(defaultProtocol).concat(id, \".rtm.\").concat(domain),\n api: \"\".concat(defaultProtocol).concat(id, \".api.\").concat(domain)\n };\n }));\n\n case 11:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n function _getServerUrls(_x3) {\n return _getServerUrls2.apply(this, arguments);\n }\n\n return _getServerUrls;\n }();\n\n Realtime._fetchRTMServers = function _fetchRTMServers(_ref6) {\n var appId = _ref6.appId,\n ssl = _ref6.ssl,\n server = _ref6.server,\n RTMServerName = _ref6.RTMServerName;\n debug$6('fetch endpoint info');\n return this._getServerUrls({\n appId: appId,\n server: server\n }).then(tap(debug$6)).then(function (_ref7) {\n var RTMRouter = _ref7.RTMRouter;\n return request({\n url: \"\".concat(RTMRouter, \"/v1/route\"),\n query: {\n appId: appId,\n secure: ssl,\n features: isWeapp ? 'wechat' : undefined,\n server: RTMServerName,\n _t: Date.now()\n },\n timeout: 20000\n }).then(tap(debug$6));\n });\n };\n\n _proto._close = function _close() {\n if (this._openPromise) {\n this._openPromise.then(function (connection) {\n return connection.close();\n });\n }\n\n delete this._openPromise;\n }\n /**\n * 手动进行重连。\n * SDK 在网络出现异常时会自动按照一定的时间间隔尝试重连,调用该方法会立即尝试重连并重置重连尝试计数器。\n * 只能在 `SCHEDULE` 事件之后,`RETRY` 事件之前调用,如果当前网络正常或者正在进行重连,调用该方法会抛异常。\n */\n ;\n\n _proto.retry = function retry() {\n var _internal = internal(this),\n connection = _internal.connection;\n\n if (!connection) {\n throw new Error('no connection established');\n }\n\n if (connection.cannot('retry')) {\n throw new Error(\"retrying not allowed when not disconnected. the connection is now \".concat(connection.current));\n }\n\n return connection.retry();\n }\n /**\n * 暂停,使 SDK 进入离线状态。\n * 你可以在网络断开、应用进入后台等时刻调用该方法让 SDK 进入离线状态,离线状态下不会尝试重连。\n * 在浏览器中 SDK 会自动监听网络变化,因此无需手动调用该方法。\n *\n * @since 3.4.0\n * @see Realtime#event:OFFLINE\n */\n ;\n\n _proto.pause = function pause() {\n // 这个方法常常在网络断开、进入后台时被调用,此时 connection 可能没有建立或者已经 close。\n // 因此不像 retry,这个方法应该尽可能 loose\n var _internal2 = internal(this),\n connection = _internal2.connection;\n\n if (!connection) return;\n if (connection.can('pause')) connection.pause();\n }\n /**\n * 恢复在线状态。\n * 你可以在网络恢复、应用回到前台等时刻调用该方法让 SDK 恢复在线状态,恢复在线状态后 SDK 会开始尝试重连。\n *\n * @since 3.4.0\n * @see Realtime#event:ONLINE\n */\n ;\n\n _proto.resume = function resume() {\n // 与 pause 一样,这个方法应该尽可能 loose\n var _internal3 = internal(this),\n connection = _internal3.connection;\n\n if (!connection) return;\n if (connection.can('resume')) connection.resume();\n };\n\n _proto._registerPending = function _registerPending(value) {\n internal(this).pendingClients.add(value);\n };\n\n _proto._deregisterPending = function _deregisterPending(client) {\n internal(this).pendingClients[\"delete\"](client);\n };\n\n _proto._register = function _register(client) {\n internal(this).clients.add(client);\n };\n\n _proto._deregister = function _deregister(client) {\n var _this = internal(this);\n\n _this.clients[\"delete\"](client);\n\n if (_this.clients.size + _this.pendingClients.size === 0) {\n this._close();\n }\n };\n\n _proto._dispatchCommand = function _dispatchCommand(command) {\n return applyDispatcher(this._plugins.beforeCommandDispatch, [command, this]).then(function (shouldDispatch) {\n // no plugin handled this command\n if (shouldDispatch) return debug$6('[WARN] Unexpected message received: %O', trim(command));\n return false;\n });\n };\n\n return Realtime;\n}(EventEmitter); // For test purpose only\n\nvar polyfilledPromise = Promise;\n\nexports.EventEmitter = EventEmitter;\nexports.Promise = polyfilledPromise;\nexports.Protocals = message;\nexports.Protocols = message;\nexports.Realtime = Realtime;\nexports.debug = debug$2;\nexports.getAdapter = getAdapter;\nexports.setAdapters = setAdapters;\n//# sourceMappingURL=core.js.map\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/leancloud-realtime/dist/core.js","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/set.js\n// module id = 364\n// module chunks = 0 1","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.set.js\n// module id = 365\n// module chunks = 0 1","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_collection-strong.js\n// module id = 366\n// module chunks = 0 1","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_array-species-create.js\n// module id = 367\n// module chunks = 0 1","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_array-species-constructor.js\n// module id = 368\n// module chunks = 0 1","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.set.to-json.js\n// module id = 369\n// module chunks = 0 1","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_collection-to-json.js\n// module id = 370\n// module chunks = 0 1","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_array-from-iterable.js\n// module id = 371\n// module chunks = 0 1","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.set.of.js\n// module id = 372\n// module chunks = 0 1","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.set.from.js\n// module id = 373\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/weak-map\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/weak-map.js\n// module id = 374\n// module chunks = 0 1","require('../modules/es6.object.to-string');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es7.weak-map.of');\nrequire('../modules/es7.weak-map.from');\nmodule.exports = require('../modules/_core').WeakMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/weak-map.js\n// module id = 375\n// module chunks = 0 1","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.weak-map.js\n// module id = 376\n// module chunks = 0 1","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_collection-weak.js\n// module id = 377\n// module chunks = 0 1","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.weak-map.of.js\n// module id = 378\n// module chunks = 0 1","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.weak-map.from.js\n// module id = 379\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/define-properties\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/define-properties.js\n// module id = 380\n// module chunks = 0 1","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/define-properties.js\n// module id = 381\n// module chunks = 0 1","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.define-properties.js\n// module id = 382\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptors\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/get-own-property-descriptors.js\n// module id = 383\n// module chunks = 0 1","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-own-property-descriptors.js\n// module id = 384\n// module chunks = 0 1","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js\n// module id = 385\n// module chunks = 0 1","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_own-keys.js\n// module id = 386\n// module chunks = 0 1","require('../../modules/es6.symbol');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-own-property-symbols.js\n// module id = 387\n// module chunks = 0 1","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/assign.js\n// module id = 388\n// module chunks = 0 1","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.assign.js\n// module id = 389\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/freeze\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/freeze.js\n// module id = 390\n// module chunks = 0 1","require('../../modules/es6.object.freeze');\nmodule.exports = require('../../modules/_core').Object.freeze;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/freeze.js\n// module id = 391\n// module chunks = 0 1","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.freeze.js\n// module id = 392\n// module chunks = 0 1","/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license protobuf.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/protobuf.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"bytebuffer\"], factory);\r\n /* CommonJS */ else if (typeof require === \"function\" && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory(require(\"bytebuffer\"), true);\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ProtoBuf\"] = factory(global[\"dcodeIO\"][\"ByteBuffer\"]);\r\n\r\n})(this, function(ByteBuffer, isCommonJS) {\r\n \"use strict\";\r\n\r\n /**\r\n * The ProtoBuf namespace.\r\n * @exports ProtoBuf\r\n * @namespace\r\n * @expose\r\n */\r\n var ProtoBuf = {};\r\n\r\n /**\r\n * @type {!function(new: ByteBuffer, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.ByteBuffer = ByteBuffer;\r\n\r\n /**\r\n * @type {?function(new: Long, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.Long = ByteBuffer.Long || null;\r\n\r\n /**\r\n * ProtoBuf.js version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.VERSION = \"5.0.3\";\r\n\r\n /**\r\n * Wire types.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES = {};\r\n\r\n /**\r\n * Varint wire type.\r\n * @type {number}\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.VARINT = 0;\r\n\r\n /**\r\n * Fixed 64 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS64 = 1;\r\n\r\n /**\r\n * Length delimited wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.LDELIM = 2;\r\n\r\n /**\r\n * Start group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.STARTGROUP = 3;\r\n\r\n /**\r\n * End group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.ENDGROUP = 4;\r\n\r\n /**\r\n * Fixed 32 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS32 = 5;\r\n\r\n /**\r\n * Packable wire types.\r\n * @type {!Array.<number>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.PACKABLE_WIRE_TYPES = [\r\n ProtoBuf.WIRE_TYPES.VARINT,\r\n ProtoBuf.WIRE_TYPES.BITS64,\r\n ProtoBuf.WIRE_TYPES.BITS32\r\n ];\r\n\r\n /**\r\n * Types.\r\n * @dict\r\n * @type {!Object.<string,{name: string, wireType: number, defaultValue: *}>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.TYPES = {\r\n // According to the protobuf spec.\r\n \"int32\": {\r\n name: \"int32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"uint32\": {\r\n name: \"uint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"sint32\": {\r\n name: \"sint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"int64\": {\r\n name: \"int64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"uint64\": {\r\n name: \"uint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sint64\": {\r\n name: \"sint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"bool\": {\r\n name: \"bool\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: false\r\n },\r\n \"double\": {\r\n name: \"double\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: 0\r\n },\r\n \"string\": {\r\n name: \"string\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: \"\"\r\n },\r\n \"bytes\": {\r\n name: \"bytes\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null // overridden in the code, must be a unique instance\r\n },\r\n \"fixed32\": {\r\n name: \"fixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"sfixed32\": {\r\n name: \"sfixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"fixed64\": {\r\n name: \"fixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sfixed64\": {\r\n name: \"sfixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"float\": {\r\n name: \"float\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"enum\": {\r\n name: \"enum\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"message\": {\r\n name: \"message\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null\r\n },\r\n \"group\": {\r\n name: \"group\",\r\n wireType: ProtoBuf.WIRE_TYPES.STARTGROUP,\r\n defaultValue: null\r\n }\r\n };\r\n\r\n /**\r\n * Valid map key types.\r\n * @type {!Array.<!Object.<string,{name: string, wireType: number, defaultValue: *}>>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.MAP_KEY_TYPES = [\r\n ProtoBuf.TYPES[\"int32\"],\r\n ProtoBuf.TYPES[\"sint32\"],\r\n ProtoBuf.TYPES[\"sfixed32\"],\r\n ProtoBuf.TYPES[\"uint32\"],\r\n ProtoBuf.TYPES[\"fixed32\"],\r\n ProtoBuf.TYPES[\"int64\"],\r\n ProtoBuf.TYPES[\"sint64\"],\r\n ProtoBuf.TYPES[\"sfixed64\"],\r\n ProtoBuf.TYPES[\"uint64\"],\r\n ProtoBuf.TYPES[\"fixed64\"],\r\n ProtoBuf.TYPES[\"bool\"],\r\n ProtoBuf.TYPES[\"string\"],\r\n ProtoBuf.TYPES[\"bytes\"]\r\n ];\r\n\r\n /**\r\n * Minimum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MIN = 1;\r\n\r\n /**\r\n * Maximum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MAX = 0x1FFFFFFF;\r\n\r\n /**\r\n * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`.\r\n * Must be set prior to parsing.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.convertFieldsToCamelCase = false;\r\n\r\n /**\r\n * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by\r\n * setting this to `false` prior to building messages.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateAccessors = true;\r\n\r\n /**\r\n * By default, messages are populated with default values if a field is not present on the wire. To disable\r\n * this behavior, set this setting to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateDefaults = true;\r\n\r\n /**\r\n * @alias ProtoBuf.Util\r\n * @expose\r\n */\r\n ProtoBuf.Util = (function() {\r\n \"use strict\";\r\n\r\n /**\r\n * ProtoBuf utilities.\r\n * @exports ProtoBuf.Util\r\n * @namespace\r\n */\r\n var Util = {};\r\n\r\n /**\r\n * Flag if running in node or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n Util.IS_NODE = !!(\r\n typeof process === 'object' && process+'' === '[object process]' && !process['browser']\r\n );\r\n\r\n /**\r\n * Constructs a XMLHttpRequest object.\r\n * @return {XMLHttpRequest}\r\n * @throws {Error} If XMLHttpRequest is not supported\r\n * @expose\r\n */\r\n Util.XHR = function() {\r\n // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html\r\n var XMLHttpFactories = [\r\n function () {return new XMLHttpRequest()},\r\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\r\n ];\r\n /** @type {?XMLHttpRequest} */\r\n var xhr = null;\r\n for (var i=0;i<XMLHttpFactories.length;i++) {\r\n try { xhr = XMLHttpFactories[i](); }\r\n catch (e) { continue; }\r\n break;\r\n }\r\n if (!xhr)\r\n throw Error(\"XMLHttpRequest is not supported\");\r\n return xhr;\r\n };\r\n\r\n /**\r\n * Fetches a resource.\r\n * @param {string} path Resource path\r\n * @param {function(?string)=} callback Callback receiving the resource's contents. If omitted the resource will\r\n * be fetched synchronously. If the request failed, contents will be null.\r\n * @return {?string|undefined} Resource contents if callback is omitted (null if the request failed), else undefined.\r\n * @expose\r\n */\r\n Util.fetch = function(path, callback) {\r\n if (callback && typeof callback != 'function')\r\n callback = null;\r\n if (Util.IS_NODE) {\r\n var fs = require(\"fs\");\r\n if (callback) {\r\n fs.readFile(path, function(err, data) {\r\n if (err)\r\n callback(null);\r\n else\r\n callback(\"\"+data);\r\n });\r\n } else\r\n try {\r\n return fs.readFileSync(path);\r\n } catch (e) {\r\n return null;\r\n }\r\n } else {\r\n var xhr = Util.XHR();\r\n xhr.open('GET', path, callback ? true : false);\r\n // xhr.setRequestHeader('User-Agent', 'XMLHTTP/1.0');\r\n xhr.setRequestHeader('Accept', 'text/plain');\r\n if (typeof xhr.overrideMimeType === 'function') xhr.overrideMimeType('text/plain');\r\n if (callback) {\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState != 4) return;\r\n if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))\r\n callback(xhr.responseText);\r\n else\r\n callback(null);\r\n };\r\n if (xhr.readyState == 4)\r\n return;\r\n xhr.send(null);\r\n } else {\r\n xhr.send(null);\r\n if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))\r\n return xhr.responseText;\r\n return null;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Converts a string to camel case.\r\n * @param {string} str\r\n * @returns {string}\r\n * @expose\r\n */\r\n Util.toCamelCase = function(str) {\r\n return str.replace(/_([a-zA-Z])/g, function ($0, $1) {\r\n return $1.toUpperCase();\r\n });\r\n };\r\n\r\n return Util;\r\n })();\r\n\r\n /**\r\n * Language expressions.\r\n * @type {!Object.<string,!RegExp>}\r\n * @expose\r\n */\r\n ProtoBuf.Lang = {\r\n\r\n // Characters always ending a statement\r\n DELIM: /[\\s\\{\\}=;:\\[\\],'\"\\(\\)<>]/g,\r\n\r\n // Field rules\r\n RULE: /^(?:required|optional|repeated|map)$/,\r\n\r\n // Field types\r\n TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,\r\n\r\n // Names\r\n NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n\r\n // Type definitions\r\n TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,\r\n\r\n // Type references\r\n TYPEREF: /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\r\n\r\n // Fully qualified type references\r\n FQTYPEREF: /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n\r\n // All numbers\r\n NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,\r\n\r\n // Decimal numbers\r\n NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/,\r\n\r\n // Hexadecimal numbers\r\n NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/,\r\n\r\n // Octal numbers\r\n NUMBER_OCT: /^0[0-7]+$/,\r\n\r\n // Floating point numbers\r\n NUMBER_FLT: /^([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,\r\n\r\n // Booleans\r\n BOOL: /^(?:true|false)$/i,\r\n\r\n // Id numbers\r\n ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Negative id numbers (enum values)\r\n NEGID: /^\\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Whitespaces\r\n WHITESPACE: /\\s/,\r\n\r\n // All strings\r\n STRING: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")|(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g,\r\n\r\n // Double quoted strings\r\n STRING_DQ: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n\r\n // Single quoted strings\r\n STRING_SQ: /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g\r\n };\r\n\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect\r\n * @expose\r\n */\r\n ProtoBuf.Reflect = (function(ProtoBuf) {\r\n \"use strict\";\r\n\r\n /**\r\n * Reflection types.\r\n * @exports ProtoBuf.Reflect\r\n * @namespace\r\n */\r\n var Reflect = {};\r\n\r\n /**\r\n * Constructs a Reflect base class.\r\n * @exports ProtoBuf.Reflect.T\r\n * @constructor\r\n * @abstract\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n */\r\n var T = function(builder, parent, name) {\r\n\r\n /**\r\n * Builder reference.\r\n * @type {!ProtoBuf.Builder}\r\n * @expose\r\n */\r\n this.builder = builder;\r\n\r\n /**\r\n * Parent object.\r\n * @type {?ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.parent = parent;\r\n\r\n /**\r\n * Object name in namespace.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Fully qualified class name\r\n * @type {string}\r\n * @expose\r\n */\r\n this.className;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T.prototype\r\n * @inner\r\n */\r\n var TPrototype = T.prototype;\r\n\r\n /**\r\n * Returns the fully qualified name of this object.\r\n * @returns {string} Fully qualified name as of \".PATH.TO.THIS\"\r\n * @expose\r\n */\r\n TPrototype.fqn = function() {\r\n var name = this.name,\r\n ptr = this;\r\n do {\r\n ptr = ptr.parent;\r\n if (ptr == null)\r\n break;\r\n name = ptr.name+\".\"+name;\r\n } while (true);\r\n return name;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this Reflect object (its fully qualified name).\r\n * @param {boolean=} includeClass Set to true to include the class name. Defaults to false.\r\n * @return String representation\r\n * @expose\r\n */\r\n TPrototype.toString = function(includeClass) {\r\n return (includeClass ? this.className + \" \" : \"\") + this.fqn();\r\n };\r\n\r\n /**\r\n * Builds this type.\r\n * @throws {Error} If this type cannot be built directly\r\n * @expose\r\n */\r\n TPrototype.build = function() {\r\n throw Error(this.toString(true)+\" cannot be built directly\");\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T\r\n * @expose\r\n */\r\n Reflect.T = T;\r\n\r\n /**\r\n * Constructs a new Namespace.\r\n * @exports ProtoBuf.Reflect.Namespace\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>=} options Namespace options\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Namespace = function(builder, parent, name, options, syntax) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Namespace\";\r\n\r\n /**\r\n * Children inside the namespace.\r\n * @type {!Array.<ProtoBuf.Reflect.T>}\r\n */\r\n this.children = [];\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.<string, *>}\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Syntax level (e.g., proto2 or proto3).\r\n * @type {!string}\r\n */\r\n this.syntax = syntax || \"proto2\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace.prototype\r\n * @inner\r\n */\r\n var NamespacePrototype = Namespace.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Returns an array of the namespace's children.\r\n * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children).\r\n * @return {Array.<ProtoBuf.Reflect.T>}\r\n * @expose\r\n */\r\n NamespacePrototype.getChildren = function(type) {\r\n type = type || null;\r\n if (type == null)\r\n return this.children.slice();\r\n var children = [];\r\n for (var i=0, k=this.children.length; i<k; ++i)\r\n if (this.children[i] instanceof type)\r\n children.push(this.children[i]);\r\n return children;\r\n };\r\n\r\n /**\r\n * Adds a child to the namespace.\r\n * @param {ProtoBuf.Reflect.T} child Child\r\n * @throws {Error} If the child cannot be added (duplicate)\r\n * @expose\r\n */\r\n NamespacePrototype.addChild = function(child) {\r\n var other;\r\n if (other = this.getChild(child.name)) {\r\n // Try to revert camelcase transformation on collision\r\n if (other instanceof Message.Field && other.name !== other.originalName && this.getChild(other.originalName) === null)\r\n other.name = other.originalName; // Revert previous first (effectively keeps both originals)\r\n else if (child instanceof Message.Field && child.name !== child.originalName && this.getChild(child.originalName) === null)\r\n child.name = child.originalName;\r\n else\r\n throw Error(\"Duplicate name in namespace \"+this.toString(true)+\": \"+child.name);\r\n }\r\n this.children.push(child);\r\n };\r\n\r\n /**\r\n * Gets a child by its name or id.\r\n * @param {string|number} nameOrId Child name or id\r\n * @return {?ProtoBuf.Reflect.T} The child or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.getChild = function(nameOrId) {\r\n var key = typeof nameOrId === 'number' ? 'id' : 'name';\r\n for (var i=0, k=this.children.length; i<k; ++i)\r\n if (this.children[i][key] === nameOrId)\r\n return this.children[i];\r\n return null;\r\n };\r\n\r\n /**\r\n * Resolves a reflect object inside of this namespace.\r\n * @param {string|!Array.<string>} qn Qualified name to resolve\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false`\r\n * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.resolve = function(qn, excludeNonNamespace) {\r\n var part = typeof qn === 'string' ? qn.split(\".\") : qn,\r\n ptr = this,\r\n i = 0;\r\n if (part[i] === \"\") { // Fully qualified name, e.g. \".My.Message'\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n i++;\r\n }\r\n var child;\r\n do {\r\n do {\r\n if (!(ptr instanceof Reflect.Namespace)) {\r\n ptr = null;\r\n break;\r\n }\r\n child = ptr.getChild(part[i]);\r\n if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) {\r\n ptr = null;\r\n break;\r\n }\r\n ptr = child; i++;\r\n } while (i < part.length);\r\n if (ptr != null)\r\n break; // Found\r\n // Else search the parent\r\n if (this.parent !== null)\r\n return this.parent.resolve(qn, excludeNonNamespace);\r\n } while (ptr != null);\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Determines the shortest qualified name of the specified type, if any, relative to this namespace.\r\n * @param {!ProtoBuf.Reflect.T} t Reflection type\r\n * @returns {string} The shortest qualified name or, if there is none, the fqn\r\n * @expose\r\n */\r\n NamespacePrototype.qn = function(t) {\r\n var part = [], ptr = t;\r\n do {\r\n part.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n } while (ptr !== null);\r\n for (var len=1; len <= part.length; len++) {\r\n var qn = part.slice(part.length-len);\r\n if (t === this.resolve(qn, t instanceof Reflect.Namespace))\r\n return qn.join(\".\");\r\n }\r\n return t.fqn();\r\n };\r\n\r\n /**\r\n * Builds the namespace and returns the runtime counterpart.\r\n * @return {Object.<string,Function|Object>} Runtime namespace\r\n * @expose\r\n */\r\n NamespacePrototype.build = function() {\r\n /** @dict */\r\n var ns = {};\r\n var children = this.children;\r\n for (var i=0, k=children.length, child; i<k; ++i) {\r\n child = children[i];\r\n if (child instanceof Namespace)\r\n ns[child.name] = child.build();\r\n }\r\n if (Object.defineProperty)\r\n Object.defineProperty(ns, \"$options\", { \"value\": this.buildOpt() });\r\n return ns;\r\n };\r\n\r\n /**\r\n * Builds the namespace's '$options' property.\r\n * @return {Object.<string,*>}\r\n */\r\n NamespacePrototype.buildOpt = function() {\r\n var opt = {},\r\n keys = Object.keys(this.options);\r\n for (var i=0, k=keys.length; i<k; ++i) {\r\n var key = keys[i],\r\n val = this.options[keys[i]];\r\n // TODO: Options are not resolved, yet.\r\n // if (val instanceof Namespace) {\r\n // opt[key] = val.build();\r\n // } else {\r\n opt[key] = val;\r\n // }\r\n }\r\n return opt;\r\n };\r\n\r\n /**\r\n * Gets the value assigned to the option with the specified name.\r\n * @param {string=} name Returns the option value if specified, otherwise all options are returned.\r\n * @return {*|Object.<string,*>}null} Option value or NULL if there is no such option\r\n */\r\n NamespacePrototype.getOption = function(name) {\r\n if (typeof name === 'undefined')\r\n return this.options;\r\n return typeof this.options[name] !== 'undefined' ? this.options[name] : null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace\r\n * @expose\r\n */\r\n Reflect.Namespace = Namespace;\r\n\r\n /**\r\n * Constructs a new Element implementation that checks and converts values for a\r\n * particular field type, as appropriate.\r\n *\r\n * An Element represents a single value: either the value of a singular field,\r\n * or a value contained in one entry of a repeated field or map field. This\r\n * class does not implement these higher-level concepts; it only encapsulates\r\n * the low-level typechecking and conversion.\r\n *\r\n * @exports ProtoBuf.Reflect.Element\r\n * @param {{name: string, wireType: number}} type Resolved data type\r\n * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant\r\n * (e.g. submessage field).\r\n * @param {boolean} isMapKey Is this element a Map key? The value will be\r\n * converted to string form if so.\r\n * @param {string} syntax Syntax level of defining message type, e.g.,\r\n * proto2 or proto3.\r\n * @param {string} name Name of the field containing this element (for error\r\n * messages)\r\n * @constructor\r\n */\r\n var Element = function(type, resolvedType, isMapKey, syntax, name) {\r\n\r\n /**\r\n * Element type, as a string (e.g., int32).\r\n * @type {{name: string, wireType: number}}\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Element type reference to submessage or enum definition, if needed.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n */\r\n this.resolvedType = resolvedType;\r\n\r\n /**\r\n * Element is a map key.\r\n * @type {boolean}\r\n */\r\n this.isMapKey = isMapKey;\r\n\r\n /**\r\n * Syntax level of defining message type, e.g., proto2 or proto3.\r\n * @type {string}\r\n */\r\n this.syntax = syntax;\r\n\r\n /**\r\n * Name of the field containing this element (for error messages)\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)\r\n throw Error(\"Invalid map key type: \" + type.name);\r\n };\r\n\r\n var ElementPrototype = Element.prototype;\r\n\r\n /**\r\n * Obtains a (new) default value for the specified type.\r\n * @param type {string|{name: string, wireType: number}} Field type\r\n * @returns {*} Default value\r\n * @inner\r\n */\r\n function mkDefault(type) {\r\n if (typeof type === 'string')\r\n type = ProtoBuf.TYPES[type];\r\n if (typeof type.defaultValue === 'undefined')\r\n throw Error(\"default value for type \"+type.name+\" is not supported\");\r\n if (type == ProtoBuf.TYPES[\"bytes\"])\r\n return new ByteBuffer(0);\r\n return type.defaultValue;\r\n }\r\n\r\n /**\r\n * Returns the default value for this field in proto3.\r\n * @function\r\n * @param type {string|{name: string, wireType: number}} the field type\r\n * @returns {*} Default value\r\n */\r\n Element.defaultFieldValue = mkDefault;\r\n\r\n /**\r\n * Makes a Long from a value.\r\n * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for\r\n * strings and numbers\r\n * @returns {!Long}\r\n * @throws {Error} If the value cannot be converted to a Long\r\n * @inner\r\n */\r\n function mkLong(value, unsigned) {\r\n if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'\r\n && value.low === value.low && value.high === value.high)\r\n return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);\r\n if (typeof value === 'string')\r\n return ProtoBuf.Long.fromString(value, unsigned || false, 10);\r\n if (typeof value === 'number')\r\n return ProtoBuf.Long.fromNumber(value, unsigned || false);\r\n throw Error(\"not convertible to Long\");\r\n }\r\n\r\n ElementPrototype.toString = function() {\r\n return (this.name || '') + (this.isMapKey ? 'map' : 'value') + ' element';\r\n }\r\n\r\n /**\r\n * Checks if the given value can be set for an element of this type (singular\r\n * field or one element of a repeated field or map).\r\n * @param {*} value Value to check\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be verified for this element slot\r\n * @expose\r\n */\r\n ElementPrototype.verifyValue = function(value) {\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n switch (this.type) {\r\n // Signed 32bit\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n // Account for !NaN: value === value\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value > 4294967295 ? value | 0 : value;\r\n\r\n // Unsigned 32bit\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value < 0 ? value >>> 0 : value;\r\n\r\n // Signed 64bit\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, false);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Unsigned 64bit\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, true);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value !== 'boolean')\r\n fail(typeof value, \"not a boolean\");\r\n return value;\r\n\r\n // Float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n if (typeof value !== 'number')\r\n fail(typeof value, \"not a number\");\r\n return value;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n if (typeof value !== 'string' && !(value && value instanceof String))\r\n fail(typeof value, \"not a string\");\r\n return \"\"+value; // Convert String object to string\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (ByteBuffer.isByteBuffer(value))\r\n return value;\r\n return ByteBuffer.wrap(value, \"base64\");\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]: {\r\n var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value);\r\n for (i=0; i<values.length; i++)\r\n if (values[i].name == value)\r\n return values[i].id;\r\n else if (values[i].id == value)\r\n return values[i].id;\r\n\r\n if (this.syntax === 'proto3') {\r\n // proto3: just make sure it's an integer.\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n if (value > 4294967295 || value < 0)\r\n fail(typeof value, \"not in range for uint32\")\r\n return value;\r\n } else {\r\n // proto2 requires enum values to be valid.\r\n fail(value, \"not a valid enum value\");\r\n }\r\n }\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"group\"]:\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n if (!value || typeof value !== 'object')\r\n fail(typeof value, \"object expected\");\r\n if (value instanceof this.resolvedType.clazz)\r\n return value;\r\n if (value instanceof ProtoBuf.Builder.Message) {\r\n // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180)\r\n var obj = {};\r\n for (var i in value)\r\n if (value.hasOwnProperty(i))\r\n obj[i] = value[i];\r\n value = obj;\r\n }\r\n // Else let's try to construct one from a key-value object\r\n return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons\r\n }\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value for \"+this.toString(true)+\": \"+value+\" (undefined type \"+this.type+\")\");\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an element on the wire.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @returns {number} Byte length\r\n * @throws {Error} If the value cannot be calculated\r\n * @expose\r\n */\r\n ElementPrototype.calculateLength = function(id, value) {\r\n if (value === null) return 0; // Nothing to encode\r\n // Tag has already been written\r\n var n;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value));\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return 4;\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return ByteBuffer.calculateVarint64(value);\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value));\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return 1;\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"string\"]:\r\n n = ByteBuffer.calculateUTF8Bytes(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining();\r\n case ProtoBuf.TYPES[\"message\"]:\r\n n = this.resolvedType.calculate(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"group\"]:\r\n n = this.resolvedType.calculate(value);\r\n return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n }\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n };\r\n\r\n /**\r\n * Encodes a value to the specified buffer. Does not encode the key.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the value cannot be encoded\r\n * @expose\r\n */\r\n ElementPrototype.encodeValue = function(id, value, buffer) {\r\n if (value === null) return buffer; // Nothing to encode\r\n // Tag has already been written\r\n\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n // \"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes\r\n // long – it is, effectively, treated like a very large unsigned integer.\" (see #122)\r\n if (value < 0)\r\n buffer.writeVarint64(value);\r\n else\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n buffer.writeVarint32ZigZag(value);\r\n break;\r\n\r\n // Fixed unsigned 32bit\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n buffer.writeUint32(value);\r\n break;\r\n\r\n // Fixed signed 32bit\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n buffer.writeInt32(value);\r\n break;\r\n\r\n // 64bit varint as-is\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n buffer.writeVarint64(value); // throws\r\n break;\r\n\r\n // 64bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n buffer.writeVarint64ZigZag(value); // throws\r\n break;\r\n\r\n // Fixed unsigned 64bit\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n buffer.writeUint64(value); // throws\r\n break;\r\n\r\n // Fixed signed 64bit\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n buffer.writeInt64(value); // throws\r\n break;\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value === 'string')\r\n buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value);\r\n else\r\n buffer.writeVarint32(value ? 1 : 0);\r\n break;\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n buffer.writeFloat32(value);\r\n break;\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n buffer.writeFloat64(value);\r\n break;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n buffer.writeVString(value);\r\n break;\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n var prevOffset = value.offset;\r\n buffer.writeVarint32(value.remaining());\r\n buffer.append(value);\r\n value.offset = prevOffset;\r\n break;\r\n\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"message\"]:\r\n var bb = new ByteBuffer().LE();\r\n this.resolvedType.encode(value, bb);\r\n buffer.writeVarint32(bb.offset);\r\n buffer.append(bb.flip());\r\n break;\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n this.resolvedType.encode(value, buffer);\r\n buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n break;\r\n\r\n default:\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Decode one element value from the specified buffer.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number} wireType The field wire type\r\n * @param {number} id The field number\r\n * @return {*} Decoded value\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n ElementPrototype.decode = function(buffer, wireType, id) {\r\n if (wireType != this.type.wireType)\r\n throw Error(\"Unexpected wire type for element\");\r\n\r\n var value, nBytes;\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return buffer.readVarint32() | 0;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return buffer.readVarint32() >>> 0;\r\n\r\n // 32bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return buffer.readVarint32ZigZag() | 0;\r\n\r\n // Fixed 32bit unsigned\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return buffer.readUint32() >>> 0;\r\n\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n return buffer.readInt32() | 0;\r\n\r\n // 64bit signed varint\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n return buffer.readVarint64();\r\n\r\n // 64bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return buffer.readVarint64().toUnsigned();\r\n\r\n // 64bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return buffer.readVarint64ZigZag();\r\n\r\n // Fixed 64bit unsigned\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return buffer.readUint64();\r\n\r\n // Fixed 64bit signed\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return buffer.readInt64();\r\n\r\n // Bool varint\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return !!buffer.readVarint32();\r\n\r\n // Constant enum value (varint)\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n // The following Builder.Message#set will already throw\r\n return buffer.readVarint32();\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return buffer.readFloat();\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return buffer.readDouble();\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return buffer.readVString();\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]: {\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n value = buffer.clone(); // Offset already set\r\n value.limit = value.offset+nBytes;\r\n buffer.offset += nBytes;\r\n return value;\r\n }\r\n\r\n // Length-delimited embedded message\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n nBytes = buffer.readVarint32();\r\n return this.resolvedType.decode(buffer, nBytes);\r\n }\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n return this.resolvedType.decode(buffer, -1, id);\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal decode type\");\r\n };\r\n\r\n /**\r\n * Converts a value from a string to the canonical element type.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {string} str The string value\r\n * @returns {*} The value\r\n */\r\n ElementPrototype.valueFromString = function(str) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueFromString() called on non-map-key element\");\r\n }\r\n\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return this.verifyValue(parseInt(str));\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n // Long-based fields support conversions from string already.\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return str === \"true\";\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return ByteBuffer.fromBinary(str);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a value from the canonical element type to a string.\r\n *\r\n * It should be the case that `valueFromString(valueToString(val))` returns\r\n * a value equivalent to `verifyValue(val)` for every legal value of `val`\r\n * according to this element type.\r\n *\r\n * This may be used when the element must be stored or used as a string,\r\n * e.g., as a map key on an Object.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {*} val The value\r\n * @returns {string} The string form of the value.\r\n */\r\n ElementPrototype.valueToString = function(value) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueToString() called on non-map-key element\");\r\n }\r\n\r\n if (this.type === ProtoBuf.TYPES[\"bytes\"]) {\r\n return value.toString(\"binary\");\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Element\r\n * @expose\r\n */\r\n Reflect.Element = Element;\r\n\r\n /**\r\n * Constructs a new Message.\r\n * @exports ProtoBuf.Reflect.Message\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>=} options Message options\r\n * @param {boolean=} isGroup `true` if this is a legacy group\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Message = function(builder, parent, name, options, isGroup, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message\";\r\n\r\n /**\r\n * Extensions range.\r\n * @type {!Array.<number>|undefined}\r\n * @expose\r\n */\r\n this.extensions = undefined;\r\n\r\n /**\r\n * Runtime message class.\r\n * @type {?function(new:ProtoBuf.Builder.Message)}\r\n * @expose\r\n */\r\n this.clazz = null;\r\n\r\n /**\r\n * Whether this is a legacy group or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.isGroup = !!isGroup;\r\n\r\n // The following cached collections are used to efficiently iterate over or look up fields when decoding.\r\n\r\n /**\r\n * Cached fields.\r\n * @type {?Array.<!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fields = null;\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.<number,!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields by name.\r\n * @type {?Object.<string,!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fieldsByName = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the message and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Message\r\n * @param {boolean=} rebuild Whether to rebuild or not, defaults to false\r\n * @return {ProtoBuf.Reflect.Message} Message class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n MessagePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Message class in its own scope\r\n var clazz = (function(ProtoBuf, T) {\r\n\r\n var fields = T.getChildren(ProtoBuf.Reflect.Message.Field),\r\n oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf);\r\n\r\n /**\r\n * Constructs a new runtime Message.\r\n * @name ProtoBuf.Builder.Message\r\n * @class Barebone of all runtime messages.\r\n * @param {!Object.<string,*>|string} values Preset values\r\n * @param {...string} var_args\r\n * @constructor\r\n * @throws {Error} If the message cannot be created\r\n */\r\n var Message = function(values, var_args) {\r\n ProtoBuf.Builder.Message.call(this);\r\n\r\n // Create virtual oneof properties\r\n for (var i=0, k=oneofs.length; i<k; ++i)\r\n this[oneofs[i].name] = null;\r\n // Create fields and set default values\r\n for (i=0, k=fields.length; i<k; ++i) {\r\n var field = fields[i];\r\n this[field.name] =\r\n field.repeated ? [] :\r\n (field.map ? new ProtoBuf.Map(field) : null);\r\n if ((field.required || T.syntax === 'proto3') &&\r\n field.defaultValue !== null)\r\n this[field.name] = field.defaultValue;\r\n }\r\n\r\n if (arguments.length > 0) {\r\n var value;\r\n // Set field values from a values object\r\n if (arguments.length === 1 && values !== null && typeof values === 'object' &&\r\n /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) &&\r\n /* not a repeated field */ !Array.isArray(values) &&\r\n /* not a Map */ !(values instanceof ProtoBuf.Map) &&\r\n /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) &&\r\n /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) &&\r\n /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) {\r\n this.$set(values);\r\n } else // Set field values from arguments, in declaration order\r\n for (i=0, k=arguments.length; i<k; ++i)\r\n if (typeof (value = arguments[i]) !== 'undefined')\r\n this.$set(fields[i].name, value); // May throw\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(ProtoBuf.Builder.Message.prototype);\r\n\r\n /**\r\n * Adds a value to a repeated field.\r\n * @name ProtoBuf.Builder.Message#add\r\n * @function\r\n * @param {string} key Field name\r\n * @param {*} value Value to add\r\n * @param {boolean=} noAssert Whether to assert the value or not (asserts by default)\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be added\r\n * @expose\r\n */\r\n MessagePrototype.add = function(key, value, noAssert) {\r\n var field = T._fieldsByName[key];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+key+\" is undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true)); // May throw if it's an enum or embedded message\r\n if (!field.repeated)\r\n throw Error(this+\"#\"+key+\" is not a repeated field\");\r\n value = field.verifyValue(value, true);\r\n }\r\n if (this[key] === null)\r\n this[key] = [];\r\n this[key].push(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a value to a repeated field. This is an alias for {@link ProtoBuf.Builder.Message#add}.\r\n * @name ProtoBuf.Builder.Message#$add\r\n * @function\r\n * @param {string} key Field name\r\n * @param {*} value Value to add\r\n * @param {boolean=} noAssert Whether to assert the value or not (asserts by default)\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be added\r\n * @expose\r\n */\r\n MessagePrototype.$add = MessagePrototype.add;\r\n\r\n /**\r\n * Sets a field's value.\r\n * @name ProtoBuf.Builder.Message#set\r\n * @function\r\n * @param {string|!Object.<string,*>} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.set = function(keyOrObj, value, noAssert) {\r\n if (keyOrObj && typeof keyOrObj === 'object') {\r\n noAssert = value;\r\n for (var ikey in keyOrObj) {\r\n // Check if virtual oneof field - don't set these\r\n if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined' && T._oneofsByName[ikey] === undefined)\r\n this.$set(ikey, value, noAssert);\r\n }\r\n return this;\r\n }\r\n var field = T._fieldsByName[keyOrObj];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: \"+field.toString(true));\r\n this[field.name] = (value = field.verifyValue(value)); // May throw\r\n } else\r\n this[keyOrObj] = value;\r\n if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = this[field.oneof.name]; // Virtual field references currently set field\r\n if (value !== null) {\r\n if (currentField !== null && currentField !== field.name)\r\n this[currentField] = null; // Clear currently set field\r\n this[field.oneof.name] = field.name; // Point virtual field at this field\r\n } else if (/* value === null && */currentField === keyOrObj)\r\n this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared)\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}.\r\n * @name ProtoBuf.Builder.Message#$set\r\n * @function\r\n * @param {string|!Object.<string,*>} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.$set = MessagePrototype.set;\r\n\r\n /**\r\n * Gets a field's value.\r\n * @name ProtoBuf.Builder.Message#get\r\n * @function\r\n * @param {string} key Key\r\n * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false`\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.get = function(key, noAssert) {\r\n if (noAssert)\r\n return this[key];\r\n var field = T._fieldsByName[key];\r\n if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true));\r\n return this[field.name];\r\n };\r\n\r\n /**\r\n * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}.\r\n * @name ProtoBuf.Builder.Message#$get\r\n * @function\r\n * @param {string} key Key\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.$get = MessagePrototype.get;\r\n\r\n // Getters and setters\r\n\r\n for (var i=0; i<fields.length; i++) {\r\n var field = fields[i];\r\n // no setters for extension fields as these are named by their fqn\r\n if (field instanceof ProtoBuf.Reflect.Message.ExtensionField)\r\n continue;\r\n\r\n if (T.builder.options['populateAccessors'])\r\n (function(field) {\r\n // set/get[SomeValue]\r\n var Name = field.originalName.replace(/(_[a-zA-Z])/g, function(match) {\r\n return match.toUpperCase().replace('_','');\r\n });\r\n Name = Name.substring(0,1).toUpperCase() + Name.substring(1);\r\n\r\n // set/get_[some_value] FIXME: Do we really need these?\r\n var name = field.originalName.replace(/([A-Z])/g, function(match) {\r\n return \"_\"+match;\r\n });\r\n\r\n /**\r\n * The current field's unbound setter function.\r\n * @function\r\n * @param {*} value\r\n * @param {boolean=} noAssert\r\n * @returns {!ProtoBuf.Builder.Message}\r\n * @inner\r\n */\r\n var setter = function(value, noAssert) {\r\n this[field.name] = noAssert ? value : field.verifyValue(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * The current field's unbound getter function.\r\n * @function\r\n * @returns {*}\r\n * @inner\r\n */\r\n var getter = function() {\r\n return this[field.name];\r\n };\r\n\r\n if (T.getChild(\"set\"+Name) === null)\r\n /**\r\n * Sets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#set[SomeField]\r\n * @function\r\n * @param {*} value Value to set\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @abstract\r\n * @throws {Error} If the value cannot be set\r\n */\r\n MessagePrototype[\"set\"+Name] = setter;\r\n\r\n if (T.getChild(\"set_\"+name) === null)\r\n /**\r\n * Sets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#set_[some_field]\r\n * @function\r\n * @param {*} value Value to set\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @abstract\r\n * @throws {Error} If the value cannot be set\r\n */\r\n MessagePrototype[\"set_\"+name] = setter;\r\n\r\n if (T.getChild(\"get\"+Name) === null)\r\n /**\r\n * Gets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#get[SomeField]\r\n * @function\r\n * @abstract\r\n * @return {*} The value\r\n */\r\n MessagePrototype[\"get\"+Name] = getter;\r\n\r\n if (T.getChild(\"get_\"+name) === null)\r\n /**\r\n * Gets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#get_[some_field]\r\n * @function\r\n * @return {*} The value\r\n * @abstract\r\n */\r\n MessagePrototype[\"get_\"+name] = getter;\r\n\r\n })(field);\r\n }\r\n\r\n // En-/decoding\r\n\r\n /**\r\n * Encodes the message.\r\n * @name ProtoBuf.Builder.Message#$encode\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message#encode64\r\n * @see ProtoBuf.Builder.Message#encodeHex\r\n * @see ProtoBuf.Builder.Message#encodeAB\r\n */\r\n MessagePrototype.encode = function(buffer, noVerify) {\r\n if (typeof buffer === 'boolean')\r\n noVerify = buffer,\r\n buffer = undefined;\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var le = buffer.littleEndian;\r\n try {\r\n T.encode(this, buffer.LE(), noVerify);\r\n return (isNew ? buffer.flip() : buffer).LE(le);\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Encodes a message using the specified data payload.\r\n * @param {!Object.<string,*>} data Data payload\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @expose\r\n */\r\n Message.encode = function(data, buffer, noVerify) {\r\n return new Message(data).encode(buffer, noVerify);\r\n };\r\n\r\n /**\r\n * Calculates the byte length of the message.\r\n * @name ProtoBuf.Builder.Message#calculate\r\n * @function\r\n * @returns {number} Byte length\r\n * @throws {Error} If the message cannot be calculated or if required fields are missing.\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function() {\r\n return T.calculate(this);\r\n };\r\n\r\n /**\r\n * Encodes the varint32 length-delimited message.\r\n * @name ProtoBuf.Builder.Message#encodeDelimited\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeDelimited = function(buffer, noVerify) {\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var enc = new ByteBuffer().LE();\r\n T.encode(this, enc, noVerify).flip();\r\n buffer.writeVarint32(enc.remaining());\r\n buffer.append(enc);\r\n return isNew ? buffer.flip() : buffer;\r\n };\r\n\r\n /**\r\n * Directly encodes the message to an ArrayBuffer.\r\n * @name ProtoBuf.Builder.Message#encodeAB\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeAB = function() {\r\n try {\r\n return this.encode().toArrayBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toArrayBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}.\r\n * @name ProtoBuf.Builder.Message#toArrayBuffer\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB;\r\n\r\n /**\r\n * Directly encodes the message to a node Buffer.\r\n * @name ProtoBuf.Builder.Message#encodeNB\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are\r\n * missing. The later still returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeNB = function() {\r\n try {\r\n return this.encode().toBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}.\r\n * @name ProtoBuf.Builder.Message#toBuffer\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBuffer = MessagePrototype.encodeNB;\r\n\r\n /**\r\n * Directly encodes the message to a base64 encoded string.\r\n * @name ProtoBuf.Builder.Message#encode64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encode64 = function() {\r\n try {\r\n return this.encode().toBase64();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBase64();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}.\r\n * @name ProtoBuf.Builder.Message#toBase64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBase64 = MessagePrototype.encode64;\r\n\r\n /**\r\n * Directly encodes the message to a hex encoded string.\r\n * @name ProtoBuf.Builder.Message#encodeHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeHex = function() {\r\n try {\r\n return this.encode().toHex();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toHex();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}.\r\n * @name ProtoBuf.Builder.Message#toHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toHex = MessagePrototype.encodeHex;\r\n\r\n /**\r\n * Clones a message object or field value to a raw object.\r\n * @param {*} obj Object to clone\r\n * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field\r\n * @returns {*} Cloned object\r\n * @inner\r\n */\r\n function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) {\r\n if (obj === null || typeof obj !== 'object') {\r\n // Convert enum values to their respective names\r\n if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) {\r\n var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj);\r\n if (name !== null)\r\n return name;\r\n }\r\n // Pass-through string, number, boolean, null...\r\n return obj;\r\n }\r\n // Convert ByteBuffers to raw buffer or strings\r\n if (ByteBuffer.isByteBuffer(obj))\r\n return binaryAsBase64 ? obj.toBase64() : obj.toBuffer();\r\n // Convert Longs to proper objects or strings\r\n if (ProtoBuf.Long.isLong(obj))\r\n return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj);\r\n var clone;\r\n // Clone arrays\r\n if (Array.isArray(obj)) {\r\n clone = [];\r\n obj.forEach(function(v, k) {\r\n clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType);\r\n });\r\n return clone;\r\n }\r\n clone = {};\r\n // Convert maps to objects\r\n if (obj instanceof ProtoBuf.Map) {\r\n var it = obj.entries();\r\n for (var e = it.next(); !e.done; e = it.next())\r\n clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType);\r\n return clone;\r\n }\r\n // Everything else is a non-null object\r\n var type = obj.$type,\r\n field = undefined;\r\n for (var i in obj)\r\n if (obj.hasOwnProperty(i)) {\r\n if (type && (field = type.getChild(i)))\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType);\r\n else\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Returns the message's raw payload.\r\n * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false`\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @returns {Object.<string,*>} Raw payload\r\n * @expose\r\n */\r\n MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) {\r\n return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type);\r\n };\r\n\r\n /**\r\n * Encodes a message to JSON.\r\n * @returns {string} JSON string\r\n * @expose\r\n */\r\n MessagePrototype.encodeJSON = function() {\r\n return JSON.stringify(\r\n cloneRaw(this,\r\n /* binary-as-base64 */ true,\r\n /* longs-as-strings */ true,\r\n this.$type\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Decodes a message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decode\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {(number|string)=} length Message length. Defaults to decode all the remainig data.\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message.decode64\r\n * @see ProtoBuf.Builder.Message.decodeHex\r\n */\r\n Message.decode = function(buffer, length, enc) {\r\n if (typeof length === 'string')\r\n enc = length,\r\n length = -1;\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n var le = buffer.littleEndian;\r\n try {\r\n var msg = T.decode(buffer.LE(), length);\r\n buffer.LE(le);\r\n return msg;\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes a varint32 length-delimited message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decodeDelimited\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeDelimited = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n if (buffer.remaining() < 1)\r\n return null;\r\n var off = buffer.offset,\r\n len = buffer.readVarint32();\r\n if (buffer.remaining() < len) {\r\n buffer.offset = off;\r\n return null;\r\n }\r\n try {\r\n var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE());\r\n buffer.offset += len;\r\n return msg;\r\n } catch (err) {\r\n buffer.offset += len;\r\n throw err;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified base64 encoded string.\r\n * @name ProtoBuf.Builder.Message.decode64\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decode64 = function(str) {\r\n return Message.decode(str, \"base64\");\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified hex encoded string.\r\n * @name ProtoBuf.Builder.Message.decodeHex\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeHex = function(str) {\r\n return Message.decode(str, \"hex\");\r\n };\r\n\r\n /**\r\n * Decodes the message from a JSON string.\r\n * @name ProtoBuf.Builder.Message.decodeJSON\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are\r\n * missing.\r\n * @expose\r\n */\r\n Message.decodeJSON = function(str) {\r\n return new Message(JSON.parse(str));\r\n };\r\n\r\n // Utility\r\n\r\n /**\r\n * Returns a string representation of this Message.\r\n * @name ProtoBuf.Builder.Message#toString\r\n * @function\r\n * @return {string} String representation as of \".Fully.Qualified.MessageName\"\r\n * @expose\r\n */\r\n MessagePrototype.toString = function() {\r\n return T.toString();\r\n };\r\n\r\n // Properties\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message.$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message#$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message.$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message#$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Message, '$options', { \"value\": T.buildOpt() }),\r\n Object.defineProperty(MessagePrototype, \"$options\", { \"value\": Message[\"$options\"] }),\r\n Object.defineProperty(Message, \"$type\", { \"value\": T }),\r\n Object.defineProperty(MessagePrototype, \"$type\", { \"value\": T });\r\n\r\n return Message;\r\n\r\n })(ProtoBuf, this);\r\n\r\n // Static enums and prototyped sub-messages / cached collections\r\n this._fields = [];\r\n this._fieldsById = {};\r\n this._fieldsByName = {};\r\n this._oneofsByName = {};\r\n for (var i=0, k=this.children.length, child; i<k; i++) {\r\n child = this.children[i];\r\n if (child instanceof Enum || child instanceof Message || child instanceof Service) {\r\n if (clazz.hasOwnProperty(child.name))\r\n throw Error(\"Illegal reflect child of \"+this.toString(true)+\": \"+child.toString(true)+\" cannot override static property '\"+child.name+\"'\");\r\n clazz[child.name] = child.build();\r\n } else if (child instanceof Message.Field)\r\n child.build(),\r\n this._fields.push(child),\r\n this._fieldsById[child.id] = child,\r\n this._fieldsByName[child.name] = child;\r\n else if (child instanceof Message.OneOf) {\r\n this._oneofsByName[child.name] = child;\r\n }\r\n else if (!(child instanceof Message.OneOf) && !(child instanceof Extension)) // Not built\r\n throw Error(\"Illegal reflect child of \"+this.toString(true)+\": \"+this.children[i].toString(true));\r\n }\r\n\r\n return this.clazz = clazz;\r\n };\r\n\r\n /**\r\n * Encodes a runtime message's contents to the specified buffer.\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message to encode\r\n * @param {ByteBuffer} buffer ByteBuffer to write to\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If required fields are missing or the message cannot be encoded for another reason\r\n * @expose\r\n */\r\n MessagePrototype.encode = function(message, buffer, noVerify) {\r\n var fieldMissing = null,\r\n field;\r\n for (var i=0, k=this._fields.length, val; i<k; ++i) {\r\n field = this._fields[i];\r\n val = message[field.name];\r\n if (field.required && val === null) {\r\n if (fieldMissing === null)\r\n fieldMissing = field;\r\n } else\r\n field.encode(noVerify ? val : field.verifyValue(val), buffer, message);\r\n }\r\n if (fieldMissing !== null) {\r\n var err = Error(\"Missing at least one required field for \"+this.toString(true)+\": \"+fieldMissing);\r\n err[\"encoded\"] = buffer; // Still expose what we got\r\n throw(err);\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Calculates a runtime message's byte length.\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message to encode\r\n * @returns {number} Byte length\r\n * @throws {Error} If required fields are missing or the message cannot be calculated for another reason\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function(message) {\r\n for (var n=0, i=0, k=this._fields.length, field, val; i<k; ++i) {\r\n field = this._fields[i];\r\n val = message[field.name];\r\n if (field.required && val === null)\r\n throw Error(\"Missing at least one required field for \"+this.toString(true)+\": \"+field);\r\n else\r\n n += field.calculate(val, message);\r\n }\r\n return n;\r\n };\r\n\r\n /**\r\n * Skips all data until the end of the specified group has been reached.\r\n * @param {number} expectedId Expected GROUPEND id\r\n * @param {!ByteBuffer} buf ByteBuffer\r\n * @returns {boolean} `true` if a value as been skipped, `false` if the end has been reached\r\n * @throws {Error} If it wasn't possible to find the end of the group (buffer overrun or end tag mismatch)\r\n * @inner\r\n */\r\n function skipTillGroupEnd(expectedId, buf) {\r\n var tag = buf.readVarint32(), // Throws on OOB\r\n wireType = tag & 0x07,\r\n id = tag >>> 3;\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n do tag = buf.readUint8();\r\n while ((tag & 0x80) === 0x80);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buf.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n tag = buf.readVarint32(); // reads the varint\r\n buf.offset += tag; // skips n bytes\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n skipTillGroupEnd(id, buf);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.ENDGROUP:\r\n if (id === expectedId)\r\n return false;\r\n else\r\n throw Error(\"Illegal GROUPEND after unknown group: \"+id+\" (\"+expectedId+\" expected)\");\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buf.offset += 4;\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type in unknown group \"+expectedId+\": \"+wireType);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Decodes an encoded message and returns the decoded message.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number=} length Message length. Defaults to decode all remaining data.\r\n * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group\r\n * @return {ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded\r\n * @expose\r\n */\r\n MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {\r\n if (typeof length !== 'number')\r\n length = -1;\r\n var start = buffer.offset,\r\n msg = new (this.clazz)(),\r\n tag, wireType, id, field;\r\n while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) {\r\n tag = buffer.readVarint32();\r\n wireType = tag & 0x07;\r\n id = tag >>> 3;\r\n if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) {\r\n if (id !== expectedGroupEndId)\r\n throw Error(\"Illegal group end indicator for \"+this.toString(true)+\": \"+id+\" (\"+(expectedGroupEndId ? expectedGroupEndId+\" expected\" : \"not a group\")+\")\");\r\n break;\r\n }\r\n if (!(field = this._fieldsById[id])) {\r\n // \"messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing.\"\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n buffer.readVarint32();\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buffer.offset += 4;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buffer.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n var len = buffer.readVarint32();\r\n buffer.offset += len;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n while (skipTillGroupEnd(id, buffer)) {}\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type for unknown field \"+id+\" in \"+this.toString(true)+\"#decode: \"+wireType);\r\n }\r\n continue;\r\n }\r\n if (field.repeated && !field.options[\"packed\"]) {\r\n msg[field.name].push(field.decode(wireType, buffer));\r\n } else if (field.map) {\r\n var keyval = field.decode(wireType, buffer);\r\n msg[field.name].set(keyval[0], keyval[1]);\r\n } else {\r\n msg[field.name] = field.decode(wireType, buffer);\r\n if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = msg[field.oneof.name]; // Virtual field references currently set field\r\n if (currentField !== null && currentField !== field.name)\r\n msg[currentField] = null; // Clear currently set field\r\n msg[field.oneof.name] = field.name; // Point virtual field at this field\r\n }\r\n }\r\n }\r\n\r\n // Check if all required fields are present and set default values for optional fields that are not\r\n for (var i=0, k=this._fields.length; i<k; ++i) {\r\n field = this._fields[i];\r\n if (msg[field.name] === null) {\r\n if (this.syntax === \"proto3\") { // Proto3 sets default values by specification\r\n msg[field.name] = field.defaultValue;\r\n } else if (field.required) {\r\n var err = Error(\"Missing at least one required field for \" + this.toString(true) + \": \" + field.name);\r\n err[\"decoded\"] = msg; // Still expose what we got\r\n throw(err);\r\n } else if (ProtoBuf.populateDefaults && field.defaultValue !== null)\r\n msg[field.name] = field.defaultValue;\r\n }\r\n }\r\n return msg;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message\r\n * @expose\r\n */\r\n Reflect.Message = Message;\r\n\r\n /**\r\n * Constructs a new Message Field.\r\n * @exports ProtoBuf.Reflect.Message.Field\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string?} keytype Key data type, if any.\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {Object.<string,*>=} options Options\r\n * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message.Field\";\r\n\r\n /**\r\n * Message field required flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Message field repeated flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Message field map flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.map = rule === \"map\";\r\n\r\n /**\r\n * Message field key type. Type reference string if unresolved, protobuf\r\n * type if resolved. Valid only if this.map === true, null otherwise.\r\n * @type {string|{name: string, wireType: number}|null}\r\n * @expose\r\n */\r\n this.keyType = keytype || null;\r\n\r\n /**\r\n * Message field type. Type reference string if unresolved, protobuf type if\r\n * resolved. In a map field, this is the value type.\r\n * @type {string|{name: string, wireType: number}}\r\n * @expose\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Resolved type reference inside the global namespace.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n * @expose\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Unique message field id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n\r\n /**\r\n * Message field options.\r\n * @type {!Object.<string,*>}\r\n * @dict\r\n * @expose\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Default value.\r\n * @type {*}\r\n * @expose\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Enclosing OneOf.\r\n * @type {?ProtoBuf.Reflect.Message.OneOf}\r\n * @expose\r\n */\r\n this.oneof = oneof || null;\r\n\r\n /**\r\n * Syntax level of this definition (e.g., proto3).\r\n * @type {string}\r\n * @expose\r\n */\r\n this.syntax = syntax || 'proto2';\r\n\r\n /**\r\n * Original field name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.originalName = this.name; // Used to revert camelcase transformation on naming collisions\r\n\r\n /**\r\n * Element implementation. Created in build() after types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Key element implementation, for map fields. Created in build() after\r\n * types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.keyElement = null;\r\n\r\n // Convert field names to camel case notation if the override is set\r\n if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField))\r\n this.name = ProtoBuf.Util.toCamelCase(this.name);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field.prototype\r\n * @inner\r\n */\r\n var FieldPrototype = Field.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the field.\r\n * @override\r\n * @expose\r\n */\r\n FieldPrototype.build = function() {\r\n this.element = new Element(this.type, this.resolvedType, false, this.syntax, this.name);\r\n if (this.map)\r\n this.keyElement = new Element(this.keyType, undefined, true, this.syntax, this.name);\r\n\r\n // In proto3, fields do not have field presence, and every field is set to\r\n // its type's default value (\"\", 0, 0.0, or false).\r\n if (this.syntax === 'proto3' && !this.repeated && !this.map)\r\n this.defaultValue = Element.defaultFieldValue(this.type);\r\n\r\n // Otherwise, default values are present when explicitly specified\r\n else if (typeof this.options['default'] !== 'undefined')\r\n this.defaultValue = this.verifyValue(this.options['default']);\r\n };\r\n\r\n /**\r\n * Checks if the given value can be set for this field.\r\n * @param {*} value Value to check\r\n * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false.\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be set for this field\r\n * @expose\r\n */\r\n FieldPrototype.verifyValue = function(value, skipRepeated) {\r\n skipRepeated = skipRepeated || false;\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n if (value === null) { // NULL values for optional fields\r\n if (this.required)\r\n fail(typeof value, \"required\");\r\n if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES[\"message\"])\r\n fail(typeof value, \"proto3 field without field presence cannot be null\");\r\n return null;\r\n }\r\n var i;\r\n if (this.repeated && !skipRepeated) { // Repeated values as arrays\r\n if (!Array.isArray(value))\r\n value = [value];\r\n var res = [];\r\n for (i=0; i<value.length; i++)\r\n res.push(this.element.verifyValue(value[i]));\r\n return res;\r\n }\r\n if (this.map && !skipRepeated) { // Map values as objects\r\n if (!(value instanceof ProtoBuf.Map)) {\r\n // If not already a Map, attempt to convert.\r\n if (!(value instanceof Object)) {\r\n fail(typeof value,\r\n \"expected ProtoBuf.Map or raw object for map field\");\r\n }\r\n return new ProtoBuf.Map(this, value);\r\n } else {\r\n return value;\r\n }\r\n }\r\n // All non-repeated fields expect no array\r\n if (!this.repeated && Array.isArray(value))\r\n fail(typeof value, \"no array expected\");\r\n\r\n return this.element.verifyValue(value);\r\n };\r\n\r\n /**\r\n * Determines whether the field will have a presence on the wire given its\r\n * value.\r\n * @param {*} value Verified field value\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {boolean} Whether the field will be present on the wire\r\n */\r\n FieldPrototype.hasWirePresence = function(value, message) {\r\n if (this.syntax !== 'proto3')\r\n return (value !== null);\r\n if (this.oneof && message[this.oneof.name] === this.name)\r\n return true;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return value.low !== 0 || value.high !== 0;\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return value;\r\n\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return value !== 0.0;\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return value.length > 0;\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return value.remaining() > 0;\r\n\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"message\"]:\r\n return value !== null;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n /**\r\n * Encodes the specified field value to the specified buffer.\r\n * @param {*} value Verified field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the field cannot be encoded\r\n * @expose\r\n */\r\n FieldPrototype.encode = function(value, buffer, message) {\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return buffer; // Optional omitted\r\n try {\r\n if (this.repeated) {\r\n var i;\r\n // \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire\r\n // types) can be declared 'packed'.\"\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n // \"All of the elements of the field are packed into a single key-value pair with wire type 2\r\n // (length-delimited). Each element is encoded the same way it would be normally, except without a\r\n // tag preceding it.\"\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1\r\n var start = buffer.offset; // Remember where the contents begin\r\n for (i=0; i<value.length; i++)\r\n this.element.encodeValue(this.id, value[i], buffer);\r\n var len = buffer.offset-start,\r\n varintLen = ByteBuffer.calculateVarint32(len);\r\n if (varintLen > 1) { // We need to move the contents\r\n var contents = buffer.slice(start, buffer.offset);\r\n start += varintLen-1;\r\n buffer.offset = start;\r\n buffer.append(contents);\r\n }\r\n buffer.writeVarint32(len, start-varintLen);\r\n } else {\r\n // \"If your message definition has repeated elements (without the [packed=true] option), the encoded\r\n // message has zero or more key-value pairs with the same tag number\"\r\n for (i=0; i<value.length; i++)\r\n buffer.writeVarint32((this.id << 3) | this.type.wireType),\r\n this.element.encodeValue(this.id, value[i], buffer);\r\n }\r\n } else if (this.map) {\r\n // Write out each map entry as a submessage.\r\n value.forEach(function(val, key, m) {\r\n // Compute the length of the submessage (key, val) pair.\r\n var length =\r\n ByteBuffer.calculateVarint32((1 << 3) | this.keyType.wireType) +\r\n this.keyElement.calculateLength(1, key) +\r\n ByteBuffer.calculateVarint32((2 << 3) | this.type.wireType) +\r\n this.element.calculateLength(2, val);\r\n\r\n // Submessage with wire type of length-delimited.\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.writeVarint32(length);\r\n\r\n // Write out the key and val.\r\n buffer.writeVarint32((1 << 3) | this.keyType.wireType);\r\n this.keyElement.encodeValue(1, key, buffer);\r\n buffer.writeVarint32((2 << 3) | this.type.wireType);\r\n this.element.encodeValue(2, val, buffer);\r\n }, this);\r\n } else {\r\n if (this.hasWirePresence(value, message)) {\r\n buffer.writeVarint32((this.id << 3) | this.type.wireType);\r\n this.element.encodeValue(this.id, value, buffer);\r\n }\r\n }\r\n } catch (e) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value+\" (\"+e+\")\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Calculates the length of this field's value on the network level.\r\n * @param {*} value Field value\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @returns {number} Byte length\r\n * @expose\r\n */\r\n FieldPrototype.calculate = function(value, message) {\r\n value = this.verifyValue(value); // May throw\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return 0; // Optional omitted\r\n var n = 0;\r\n try {\r\n if (this.repeated) {\r\n var i, ni;\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n ni = 0;\r\n for (i=0; i<value.length; i++)\r\n ni += this.element.calculateLength(this.id, value[i]);\r\n n += ByteBuffer.calculateVarint32(ni);\r\n n += ni;\r\n } else {\r\n for (i=0; i<value.length; i++)\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | this.type.wireType),\r\n n += this.element.calculateLength(this.id, value[i]);\r\n }\r\n } else if (this.map) {\r\n // Each map entry becomes a submessage.\r\n value.forEach(function(val, key, m) {\r\n // Compute the length of the submessage (key, val) pair.\r\n var length =\r\n ByteBuffer.calculateVarint32((1 << 3) | this.keyType.wireType) +\r\n this.keyElement.calculateLength(1, key) +\r\n ByteBuffer.calculateVarint32((2 << 3) | this.type.wireType) +\r\n this.element.calculateLength(2, val);\r\n\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n n += ByteBuffer.calculateVarint32(length);\r\n n += length;\r\n }, this);\r\n } else {\r\n if (this.hasWirePresence(value, message)) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | this.type.wireType);\r\n n += this.element.calculateLength(this.id, value);\r\n }\r\n }\r\n } catch (e) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value+\" (\"+e+\")\");\r\n }\r\n return n;\r\n };\r\n\r\n /**\r\n * Decode the field value from the specified buffer.\r\n * @param {number} wireType Leading wire type\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {boolean=} skipRepeated Whether to skip the repeated check or not. Defaults to false.\r\n * @return {*} Decoded value: array for packed repeated fields, [key, value] for\r\n * map fields, or an individual value otherwise.\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n FieldPrototype.decode = function(wireType, buffer, skipRepeated) {\r\n var value, nBytes;\r\n\r\n // We expect wireType to match the underlying type's wireType unless we see\r\n // a packed repeated field, or unless this is a map field.\r\n var wireTypeOK =\r\n (!this.map && wireType == this.type.wireType) ||\r\n (!skipRepeated && this.repeated && this.options[\"packed\"] &&\r\n wireType == ProtoBuf.WIRE_TYPES.LDELIM) ||\r\n (this.map && wireType == ProtoBuf.WIRE_TYPES.LDELIM);\r\n if (!wireTypeOK)\r\n throw Error(\"Illegal wire type for field \"+this.toString(true)+\": \"+wireType+\" (\"+this.type.wireType+\" expected)\");\r\n\r\n // Handle packed repeated fields.\r\n if (wireType == ProtoBuf.WIRE_TYPES.LDELIM && this.repeated && this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n if (!skipRepeated) {\r\n nBytes = buffer.readVarint32();\r\n nBytes = buffer.offset + nBytes; // Limit\r\n var values = [];\r\n while (buffer.offset < nBytes)\r\n values.push(this.decode(this.type.wireType, buffer, true));\r\n return values;\r\n }\r\n // Read the next value otherwise...\r\n }\r\n\r\n // Handle maps.\r\n if (this.map) {\r\n // Read one (key, value) submessage, and return [key, value]\r\n var key = Element.defaultFieldValue(this.keyType);\r\n value = Element.defaultFieldValue(this.type);\r\n\r\n // Read the length\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n\r\n // Get a sub-buffer of this key/value submessage\r\n var msgbuf = buffer.clone();\r\n msgbuf.limit = msgbuf.offset + nBytes;\r\n buffer.offset += nBytes;\r\n\r\n while (msgbuf.remaining() > 0) {\r\n var tag = msgbuf.readVarint32();\r\n wireType = tag & 0x07;\r\n var id = tag >>> 3;\r\n if (id === 1) {\r\n key = this.keyElement.decode(msgbuf, wireType, id);\r\n } else if (id === 2) {\r\n value = this.element.decode(msgbuf, wireType, id);\r\n } else {\r\n throw Error(\"Unexpected tag in map field key/value submessage\");\r\n }\r\n }\r\n\r\n return [key, value];\r\n }\r\n\r\n // Handle singular and non-packed repeated field values.\r\n return this.element.decode(buffer, wireType, this.id);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field\r\n * @expose\r\n */\r\n Reflect.Message.Field = Field;\r\n\r\n /**\r\n * Constructs a new Message ExtensionField.\r\n * @exports ProtoBuf.Reflect.Message.ExtensionField\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {!Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Message.Field\r\n */\r\n var ExtensionField = function(builder, message, rule, type, name, id, options) {\r\n Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options);\r\n\r\n /**\r\n * Extension reference.\r\n * @type {!ProtoBuf.Reflect.Extension}\r\n * @expose\r\n */\r\n this.extension;\r\n };\r\n\r\n // Extends Field\r\n ExtensionField.prototype = Object.create(Field.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.ExtensionField\r\n * @expose\r\n */\r\n Reflect.Message.ExtensionField = ExtensionField;\r\n\r\n /**\r\n * Constructs a new Message OneOf.\r\n * @exports ProtoBuf.Reflect.Message.OneOf\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} name OneOf name\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var OneOf = function(builder, message, name) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * Enclosed fields.\r\n * @type {!Array.<!ProtoBuf.Reflect.Message.Field>}\r\n * @expose\r\n */\r\n this.fields = [];\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.OneOf\r\n * @expose\r\n */\r\n Reflect.Message.OneOf = OneOf;\r\n\r\n /**\r\n * Constructs a new Enum.\r\n * @exports ProtoBuf.Reflect.Enum\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object\r\n * @param {string} name Enum name\r\n * @param {Object.<string,*>=} options Enum options\r\n * @param {string?} syntax The syntax level (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Enum = function(builder, parent, name, options, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum\";\r\n\r\n /**\r\n * Runtime enum object.\r\n * @type {Object.<string,number>|null}\r\n * @expose\r\n */\r\n this.object = null;\r\n };\r\n\r\n /**\r\n * Gets the string name of an enum value.\r\n * @param {!ProtoBuf.Builder.Enum} enm Runtime enum\r\n * @param {number} value Enum value\r\n * @returns {?string} Name or `null` if not present\r\n * @expose\r\n */\r\n Enum.getName = function(enm, value) {\r\n var keys = Object.keys(enm);\r\n for (var i=0, key; i<keys.length; ++i)\r\n if (enm[key = keys[i]] === value)\r\n return key;\r\n return null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum.prototype\r\n * @inner\r\n */\r\n var EnumPrototype = Enum.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds this enum and returns the runtime counterpart.\r\n * @param {boolean} rebuild Whether to rebuild or not, defaults to false\r\n * @returns {!Object.<string,number>}\r\n * @expose\r\n */\r\n EnumPrototype.build = function(rebuild) {\r\n if (this.object && !rebuild)\r\n return this.object;\r\n var enm = new ProtoBuf.Builder.Enum(),\r\n values = this.getChildren(Enum.Value);\r\n for (var i=0, k=values.length; i<k; ++i)\r\n enm[values[i]['name']] = values[i]['id'];\r\n if (Object.defineProperty)\r\n Object.defineProperty(enm, '$options', {\r\n \"value\": this.buildOpt(),\r\n \"enumerable\": false\r\n });\r\n return this.object = enm;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum\r\n * @expose\r\n */\r\n Reflect.Enum = Enum;\r\n\r\n /**\r\n * Constructs a new Enum Value.\r\n * @exports ProtoBuf.Reflect.Enum.Value\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Enum} enm Enum reference\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Value = function(builder, enm, name, id) {\r\n T.call(this, builder, enm, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum.Value\";\r\n\r\n /**\r\n * Unique enum value id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n };\r\n\r\n // Extends T\r\n Value.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum.Value\r\n * @expose\r\n */\r\n Reflect.Enum.Value = Value;\r\n\r\n /**\r\n * An extension (field).\r\n * @exports ProtoBuf.Reflect.Extension\r\n * @constructor\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n * @param {!ProtoBuf.Reflect.Message.Field} field Extension field\r\n */\r\n var Extension = function(builder, parent, name, field) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * Extended message field.\r\n * @type {!ProtoBuf.Reflect.Message.Field}\r\n * @expose\r\n */\r\n this.field = field;\r\n };\r\n\r\n // Extends T\r\n Extension.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Extension\r\n * @expose\r\n */\r\n Reflect.Extension = Extension;\r\n\r\n /**\r\n * Constructs a new Service.\r\n * @exports ProtoBuf.Reflect.Service\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} root Root\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Service = function(builder, root, name, options) {\r\n Namespace.call(this, builder, root, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service\";\r\n\r\n /**\r\n * Built runtime service class.\r\n * @type {?function(new:ProtoBuf.Builder.Service)}\r\n */\r\n this.clazz = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the service and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Service\r\n * @param {boolean=} rebuild Whether to rebuild or not\r\n * @return {Function} Service class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n ServicePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Service class in its own scope\r\n return this.clazz = (function(ProtoBuf, T) {\r\n\r\n /**\r\n * Constructs a new runtime Service.\r\n * @name ProtoBuf.Builder.Service\r\n * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message\r\n * @class Barebone of all runtime services.\r\n * @constructor\r\n * @throws {Error} If the service cannot be created\r\n */\r\n var Service = function(rpcImpl) {\r\n ProtoBuf.Builder.Service.call(this);\r\n\r\n /**\r\n * Service implementation.\r\n * @name ProtoBuf.Builder.Service#rpcImpl\r\n * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))}\r\n * @expose\r\n */\r\n this.rpcImpl = rpcImpl || function(name, msg, callback) {\r\n // This is what a user has to implement: A function receiving the method name, the actual message to\r\n // send (type checked) and the callback that's either provided with the error as its first\r\n // argument or null and the actual response message.\r\n setTimeout(callback.bind(this, Error(\"Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services\")), 0); // Must be async!\r\n };\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype);\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the given RPC implementation.\r\n * @name ProtoBuf.Builder.Service.[Method]\r\n * @function\r\n * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the instance's RPC implementation.\r\n * @name ProtoBuf.Builder.Service#[Method]\r\n * @function\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod);\r\n for (var i=0; i<rpc.length; i++) {\r\n (function(method) {\r\n\r\n // service#Method(message, callback)\r\n ServicePrototype[method.name] = function(req, callback) {\r\n try {\r\n try {\r\n // If given as a buffer, decode the request. Will throw a TypeError if not a valid buffer.\r\n req = method.resolvedRequestType.clazz.decode(ByteBuffer.wrap(req));\r\n } catch (err) {\r\n if (!(err instanceof TypeError))\r\n throw err;\r\n }\r\n if (req === null || typeof req !== 'object')\r\n throw Error(\"Illegal arguments\");\r\n if (!(req instanceof method.resolvedRequestType.clazz))\r\n req = new method.resolvedRequestType.clazz(req);\r\n this.rpcImpl(method.fqn(), req, function(err, res) { // Assumes that this is properly async\r\n if (err) {\r\n callback(err);\r\n return;\r\n }\r\n // Coalesce to empty string when service response has empty content\r\n if (res === null)\r\n res = ''\r\n try { res = method.resolvedResponseType.clazz.decode(res); } catch (notABuffer) {}\r\n if (!res || !(res instanceof method.resolvedResponseType.clazz)) {\r\n callback(Error(\"Illegal response type received in service method \"+ T.name+\"#\"+method.name));\r\n return;\r\n }\r\n callback(null, res);\r\n });\r\n } catch (err) {\r\n setTimeout(callback.bind(this, err), 0);\r\n }\r\n };\r\n\r\n // Service.Method(rpcImpl, message, callback)\r\n Service[method.name] = function(rpcImpl, req, callback) {\r\n new Service(rpcImpl)[method.name](req, callback);\r\n };\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service[method.name], \"$options\", { \"value\": method.buildOpt() }),\r\n Object.defineProperty(ServicePrototype[method.name], \"$options\", { \"value\": Service[method.name][\"$options\"] });\r\n })(rpc[i]);\r\n }\r\n\r\n // Properties\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service.$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service#$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service.$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service#$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service, \"$options\", { \"value\": T.buildOpt() }),\r\n Object.defineProperty(ServicePrototype, \"$options\", { \"value\": Service[\"$options\"] }),\r\n Object.defineProperty(Service, \"$type\", { \"value\": T }),\r\n Object.defineProperty(ServicePrototype, \"$type\", { \"value\": T });\r\n\r\n return Service;\r\n\r\n })(ProtoBuf, this);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service\r\n * @expose\r\n */\r\n Reflect.Service = Service;\r\n\r\n /**\r\n * Abstract service method.\r\n * @exports ProtoBuf.Reflect.Service.Method\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Method = function(builder, svc, name, options) {\r\n T.call(this, builder, svc, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.Method\";\r\n\r\n /**\r\n * Options.\r\n * @type {Object.<string, *>}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method.prototype\r\n * @inner\r\n */\r\n var MethodPrototype = Method.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the method's '$options' property.\r\n * @name ProtoBuf.Reflect.Service.Method#buildOpt\r\n * @function\r\n * @return {Object.<string,*>}\r\n */\r\n MethodPrototype.buildOpt = NamespacePrototype.buildOpt;\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method\r\n * @expose\r\n */\r\n Reflect.Service.Method = Method;\r\n\r\n /**\r\n * RPC service method.\r\n * @exports ProtoBuf.Reflect.Service.RPCMethod\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {string} request Request message name\r\n * @param {string} response Response message name\r\n * @param {boolean} request_stream Whether requests are streamed\r\n * @param {boolean} response_stream Whether responses are streamed\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Service.Method\r\n */\r\n var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) {\r\n Method.call(this, builder, svc, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.RPCMethod\";\r\n\r\n /**\r\n * Request message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.requestName = request;\r\n\r\n /**\r\n * Response message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.responseName = response;\r\n\r\n /**\r\n * Whether requests are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.requestStream = request_stream;\r\n\r\n /**\r\n * Whether responses are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.responseStream = response_stream;\r\n\r\n /**\r\n * Resolved request message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedResponseType = null;\r\n };\r\n\r\n // Extends Method\r\n RPCMethod.prototype = Object.create(Method.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.RPCMethod\r\n * @expose\r\n */\r\n Reflect.Service.RPCMethod = RPCMethod;\r\n\r\n return Reflect;\r\n\r\n })(ProtoBuf);\r\n\r\n /**\r\n * @alias ProtoBuf.Builder\r\n * @expose\r\n */\r\n ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Builder.\r\n * @exports ProtoBuf.Builder\r\n * @class Provides the functionality to build protocol messages.\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n */\r\n var Builder = function(options) {\r\n\r\n /**\r\n * Namespace.\r\n * @type {ProtoBuf.Reflect.Namespace}\r\n * @expose\r\n */\r\n this.ns = new Reflect.Namespace(this, null, \"\"); // Global namespace\r\n\r\n /**\r\n * Namespace pointer.\r\n * @type {ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.ptr = this.ns;\r\n\r\n /**\r\n * Resolved flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * The current building result.\r\n * @type {Object.<string,ProtoBuf.Builder.Message|Object>|null}\r\n * @expose\r\n */\r\n this.result = null;\r\n\r\n /**\r\n * Imported files.\r\n * @type {Array.<string>}\r\n * @expose\r\n */\r\n this.files = {};\r\n\r\n /**\r\n * Import root override.\r\n * @type {?string}\r\n * @expose\r\n */\r\n this.importRoot = null;\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.<string, *>}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.prototype\r\n * @inner\r\n */\r\n var BuilderPrototype = Builder.prototype;\r\n\r\n // ----- Definition tests -----\r\n\r\n /**\r\n * Tests if a definition most likely describes a message.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessage = function(def) {\r\n // Messages require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Messages do not contain values (enum) or rpc methods (service)\r\n if (typeof def[\"values\"] !== 'undefined' || typeof def[\"rpc\"] !== 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a message field.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessageField = function(def) {\r\n // Message fields require a string rule, name and type and an id\r\n if (typeof def[\"rule\"] !== 'string' || typeof def[\"name\"] !== 'string' || typeof def[\"type\"] !== 'string' || typeof def[\"id\"] === 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an enum.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isEnum = function(def) {\r\n // Enums require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Enums require at least one value\r\n if (typeof def[\"values\"] === 'undefined' || !Array.isArray(def[\"values\"]) || def[\"values\"].length === 0)\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a service.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isService = function(def) {\r\n // Services require a string name and an rpc object\r\n if (typeof def[\"name\"] !== 'string' || typeof def[\"rpc\"] !== 'object' || !def[\"rpc\"])\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an extended message\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isExtend = function(def) {\r\n // Extends rquire a string ref\r\n if (typeof def[\"ref\"] !== 'string')\r\n return false;\r\n return true;\r\n };\r\n\r\n // ----- Building -----\r\n\r\n /**\r\n * Resets the pointer to the root namespace.\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.reset = function() {\r\n this.ptr = this.ns;\r\n return this;\r\n };\r\n\r\n /**\r\n * Defines a namespace on top of the current pointer position and places the pointer on it.\r\n * @param {string} namespace\r\n * @return {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.define = function(namespace) {\r\n if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace))\r\n throw Error(\"illegal namespace: \"+namespace);\r\n namespace.split(\".\").forEach(function(part) {\r\n var ns = this.ptr.getChild(part);\r\n if (ns === null) // Keep existing\r\n this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part));\r\n this.ptr = ns;\r\n }, this);\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates the specified definitions at the current pointer position.\r\n * @param {!Array.<!Object>} defs Messages, enums or services to create\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If a message definition is invalid\r\n * @expose\r\n */\r\n BuilderPrototype.create = function(defs) {\r\n if (!defs)\r\n return this; // Nothing to create\r\n if (!Array.isArray(defs))\r\n defs = [defs];\r\n else {\r\n if (defs.length === 0)\r\n return this;\r\n defs = defs.slice();\r\n }\r\n\r\n // It's quite hard to keep track of scopes and memory here, so let's do this iteratively.\r\n var stack = [defs];\r\n while (stack.length > 0) {\r\n defs = stack.pop();\r\n\r\n if (!Array.isArray(defs)) // Stack always contains entire namespaces\r\n throw Error(\"not a valid namespace: \"+JSON.stringify(defs));\r\n\r\n while (defs.length > 0) {\r\n var def = defs.shift(); // Namespaces always contain an array of messages, enums and services\r\n\r\n if (Builder.isMessage(def)) {\r\n var obj = new Reflect.Message(this, this.ptr, def[\"name\"], def[\"options\"], def[\"isGroup\"], def[\"syntax\"]);\r\n\r\n // Create OneOfs\r\n var oneofs = {};\r\n if (def[\"oneofs\"])\r\n Object.keys(def[\"oneofs\"]).forEach(function(name) {\r\n obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name));\r\n }, this);\r\n\r\n // Create fields\r\n if (def[\"fields\"])\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld[\"id\"]|0) !== null)\r\n throw Error(\"duplicate or invalid field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld[\"options\"] && typeof fld[\"options\"] !== 'object')\r\n throw Error(\"illegal field options in \"+obj.name+\"#\"+fld[\"name\"]);\r\n var oneof = null;\r\n if (typeof fld[\"oneof\"] === 'string' && !(oneof = oneofs[fld[\"oneof\"]]))\r\n throw Error(\"illegal oneof in \"+obj.name+\"#\"+fld[\"name\"]+\": \"+fld[\"oneof\"]);\r\n fld = new Reflect.Message.Field(this, obj, fld[\"rule\"], fld[\"keytype\"], fld[\"type\"], fld[\"name\"], fld[\"id\"], fld[\"options\"], oneof, def[\"syntax\"]);\r\n if (oneof)\r\n oneof.fields.push(fld);\r\n obj.addChild(fld);\r\n }, this);\r\n\r\n // Push children to stack\r\n var subObj = [];\r\n if (def[\"enums\"])\r\n def[\"enums\"].forEach(function(enm) {\r\n subObj.push(enm);\r\n });\r\n if (def[\"messages\"])\r\n def[\"messages\"].forEach(function(msg) {\r\n subObj.push(msg);\r\n });\r\n if (def[\"services\"])\r\n def[\"services\"].forEach(function(svc) {\r\n subObj.push(svc);\r\n });\r\n\r\n // Set extension ranges\r\n if (def[\"extensions\"]) {\r\n if (typeof def[\"extensions\"][0] === 'number') // pre 5.0.1\r\n obj.extensions = [ def[\"extensions\"] ];\r\n else\r\n obj.extensions = def[\"extensions\"];\r\n }\r\n\r\n // Create on top of current namespace\r\n this.ptr.addChild(obj);\r\n if (subObj.length > 0) {\r\n stack.push(defs); // Push the current level back\r\n defs = subObj; // Continue processing sub level\r\n subObj = null;\r\n this.ptr = obj; // And move the pointer to this namespace\r\n obj = null;\r\n continue;\r\n }\r\n subObj = null;\r\n\r\n } else if (Builder.isEnum(def)) {\r\n\r\n obj = new Reflect.Enum(this, this.ptr, def[\"name\"], def[\"options\"], def[\"syntax\"]);\r\n def[\"values\"].forEach(function(val) {\r\n obj.addChild(new Reflect.Enum.Value(this, obj, val[\"name\"], val[\"id\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isService(def)) {\r\n\r\n obj = new Reflect.Service(this, this.ptr, def[\"name\"], def[\"options\"]);\r\n Object.keys(def[\"rpc\"]).forEach(function(name) {\r\n var mtd = def[\"rpc\"][name];\r\n obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd[\"request\"], mtd[\"response\"], !!mtd[\"request_stream\"], !!mtd[\"response_stream\"], mtd[\"options\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isExtend(def)) {\r\n\r\n obj = this.ptr.resolve(def[\"ref\"], true);\r\n if (obj) {\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld['id']|0) !== null)\r\n throw Error(\"duplicate extended field id in \"+obj.name+\": \"+fld['id']);\r\n // Check if field id is allowed to be extended\r\n if (obj.extensions) {\r\n var valid = false;\r\n obj.extensions.forEach(function(range) {\r\n if (fld[\"id\"] >= range[0] && fld[\"id\"] <= range[1])\r\n valid = true;\r\n });\r\n if (!valid)\r\n throw Error(\"illegal extended field id in \"+obj.name+\": \"+fld['id']+\" (not within valid ranges)\");\r\n }\r\n // Convert extension field names to camel case notation if the override is set\r\n var name = fld[\"name\"];\r\n if (this.options['convertFieldsToCamelCase'])\r\n name = ProtoBuf.Util.toCamelCase(name);\r\n // see #161: Extensions use their fully qualified name as their runtime key and...\r\n var field = new Reflect.Message.ExtensionField(this, obj, fld[\"rule\"], fld[\"type\"], this.ptr.fqn()+'.'+name, fld[\"id\"], fld[\"options\"]);\r\n // ...are added on top of the current namespace as an extension which is used for\r\n // resolving their type later on (the extension always keeps the original name to\r\n // prevent naming collisions)\r\n var ext = new Reflect.Extension(this, this.ptr, fld[\"name\"], field);\r\n field.extension = ext;\r\n this.ptr.addChild(ext);\r\n obj.addChild(field);\r\n }, this);\r\n\r\n } else if (!/\\.?google\\.protobuf\\./.test(def[\"ref\"])) // Silently skip internal extensions\r\n throw Error(\"extended message \"+def[\"ref\"]+\" is not defined\");\r\n\r\n } else\r\n throw Error(\"not a valid definition: \"+JSON.stringify(def));\r\n\r\n def = null;\r\n obj = null;\r\n }\r\n // Break goes here\r\n defs = null;\r\n this.ptr = this.ptr.parent; // Namespace done, continue at parent\r\n }\r\n this.resolved = false; // Require re-resolve\r\n this.result = null; // Require re-build\r\n return this;\r\n };\r\n\r\n /**\r\n * Propagates syntax to all children.\r\n * @param {!Object} parent\r\n * @inner\r\n */\r\n function propagateSyntax(parent) {\r\n if (parent['messages']) {\r\n parent['messages'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n propagateSyntax(child);\r\n });\r\n }\r\n if (parent['enums']) {\r\n parent['enums'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Imports another definition into this builder.\r\n * @param {Object.<string,*>} json Parsed import\r\n * @param {(string|{root: string, file: string})=} filename Imported file name\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If the definition or file cannot be imported\r\n * @expose\r\n */\r\n BuilderPrototype[\"import\"] = function(json, filename) {\r\n var delim = '/';\r\n\r\n // Make sure to skip duplicate imports\r\n\r\n if (typeof filename === 'string') {\r\n\r\n if (ProtoBuf.Util.IS_NODE)\r\n filename = require(\"path\")['resolve'](filename);\r\n if (this.files[filename] === true)\r\n return this.reset();\r\n this.files[filename] = true;\r\n\r\n } else if (typeof filename === 'object') { // Object with root, file.\r\n\r\n var root = filename.root;\r\n if (ProtoBuf.Util.IS_NODE)\r\n root = require(\"path\")['resolve'](root);\r\n if (root.indexOf(\"\\\\\") >= 0 || filename.file.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n var fname;\r\n if (ProtoBuf.Util.IS_NODE)\r\n fname = require(\"path\")['join'](root, filename.file);\r\n else\r\n fname = root + delim + filename.file;\r\n if (this.files[fname] === true)\r\n return this.reset();\r\n this.files[fname] = true;\r\n }\r\n\r\n // Import imports\r\n\r\n if (json['imports'] && json['imports'].length > 0) {\r\n var importRoot,\r\n resetRoot = false;\r\n\r\n if (typeof filename === 'object') { // If an import root is specified, override\r\n\r\n this.importRoot = filename[\"root\"]; resetRoot = true; // ... and reset afterwards\r\n importRoot = this.importRoot;\r\n filename = filename[\"file\"];\r\n if (importRoot.indexOf(\"\\\\\") >= 0 || filename.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n\r\n } else if (typeof filename === 'string') {\r\n\r\n if (this.importRoot) // If import root is overridden, use it\r\n importRoot = this.importRoot;\r\n else { // Otherwise compute from filename\r\n if (filename.indexOf(\"/\") >= 0) { // Unix\r\n importRoot = filename.replace(/\\/[^\\/]*$/, \"\");\r\n if (/* /file.proto */ importRoot === \"\")\r\n importRoot = \"/\";\r\n } else if (filename.indexOf(\"\\\\\") >= 0) { // Windows\r\n importRoot = filename.replace(/\\\\[^\\\\]*$/, \"\");\r\n delim = '\\\\';\r\n } else\r\n importRoot = \".\";\r\n }\r\n\r\n } else\r\n importRoot = null;\r\n\r\n for (var i=0; i<json['imports'].length; i++) {\r\n if (typeof json['imports'][i] === 'string') { // Import file\r\n if (!importRoot)\r\n throw Error(\"cannot determine import root\");\r\n var importFilename = json['imports'][i];\r\n if (importFilename === \"google/protobuf/descriptor.proto\")\r\n continue; // Not needed and therefore not used\r\n if (ProtoBuf.Util.IS_NODE)\r\n importFilename = require(\"path\")['join'](importRoot, importFilename);\r\n else\r\n importFilename = importRoot + delim + importFilename;\r\n if (this.files[importFilename] === true)\r\n continue; // Already imported\r\n if (/\\.proto$/i.test(importFilename) && !ProtoBuf.DotProto) // If this is a light build\r\n importFilename = importFilename.replace(/\\.proto$/, \".json\"); // always load the JSON file\r\n var contents = ProtoBuf.Util.fetch(importFilename);\r\n if (contents === null)\r\n throw Error(\"failed to import '\"+importFilename+\"' in '\"+filename+\"': file not found\");\r\n if (/\\.json$/i.test(importFilename)) // Always possible\r\n this[\"import\"](JSON.parse(contents+\"\"), importFilename); // May throw\r\n else\r\n this[\"import\"](ProtoBuf.DotProto.Parser.parse(contents), importFilename); // May throw\r\n } else // Import structure\r\n if (!filename)\r\n this[\"import\"](json['imports'][i]);\r\n else if (/\\.(\\w+)$/.test(filename)) // With extension: Append _importN to the name portion to make it unique\r\n this[\"import\"](json['imports'][i], filename.replace(/^(.+)\\.(\\w+)$/, function($0, $1, $2) { return $1+\"_import\"+i+\".\"+$2; }));\r\n else // Without extension: Append _importN to make it unique\r\n this[\"import\"](json['imports'][i], filename+\"_import\"+i);\r\n }\r\n if (resetRoot) // Reset import root override when all imports are done\r\n this.importRoot = null;\r\n }\r\n\r\n // Import structures\r\n\r\n if (json['package'])\r\n this.define(json['package']);\r\n if (json['syntax'])\r\n propagateSyntax(json);\r\n var base = this.ptr;\r\n if (json['options'])\r\n Object.keys(json['options']).forEach(function(key) {\r\n base.options[key] = json['options'][key];\r\n });\r\n if (json['messages'])\r\n this.create(json['messages']),\r\n this.ptr = base;\r\n if (json['enums'])\r\n this.create(json['enums']),\r\n this.ptr = base;\r\n if (json['services'])\r\n this.create(json['services']),\r\n this.ptr = base;\r\n if (json['extends'])\r\n this.create(json['extends']);\r\n\r\n return this.reset();\r\n };\r\n\r\n /**\r\n * Resolves all namespace objects.\r\n * @throws {Error} If a type cannot be resolved\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.resolveAll = function() {\r\n // Resolve all reflected objects\r\n var res;\r\n if (this.ptr == null || typeof this.ptr.type === 'object')\r\n return this; // Done (already resolved)\r\n\r\n if (this.ptr instanceof Reflect.Namespace) { // Resolve children\r\n\r\n this.ptr.children.forEach(function(child) {\r\n this.ptr = child;\r\n this.resolveAll();\r\n }, this);\r\n\r\n } else if (this.ptr instanceof Reflect.Message.Field) { // Resolve type\r\n\r\n if (!Lang.TYPE.test(this.ptr.type)) {\r\n if (!Lang.TYPEREF.test(this.ptr.type))\r\n throw Error(\"illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n res = (this.ptr instanceof Reflect.Message.ExtensionField ? this.ptr.extension.parent : this.ptr.parent).resolve(this.ptr.type, true);\r\n if (!res)\r\n throw Error(\"unresolvable type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n this.ptr.resolvedType = res;\r\n if (res instanceof Reflect.Enum) {\r\n this.ptr.type = ProtoBuf.TYPES[\"enum\"];\r\n if (this.ptr.syntax === 'proto3' && res.syntax !== 'proto3')\r\n throw Error(\"proto3 message cannot reference proto2 enum\");\r\n }\r\n else if (res instanceof Reflect.Message)\r\n this.ptr.type = res.isGroup ? ProtoBuf.TYPES[\"group\"] : ProtoBuf.TYPES[\"message\"];\r\n else\r\n throw Error(\"illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n } else\r\n this.ptr.type = ProtoBuf.TYPES[this.ptr.type];\r\n\r\n // If it's a map field, also resolve the key type. The key type can be only a numeric, string, or bool type\r\n // (i.e., no enums or messages), so we don't need to resolve against the current namespace.\r\n if (this.ptr.map) {\r\n if (!Lang.TYPE.test(this.ptr.keyType))\r\n throw Error(\"illegal key type for map field in \"+this.ptr.toString(true)+\": \"+this.ptr.keyType);\r\n this.ptr.keyType = ProtoBuf.TYPES[this.ptr.keyType];\r\n }\r\n\r\n // If it's a repeated and packable field then proto3 mandates it should be packed by\r\n // default\r\n if (\r\n this.ptr.syntax === 'proto3' &&\r\n this.ptr.repeated && this.ptr.options.packed === undefined &&\r\n ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.ptr.type.wireType) !== -1\r\n ) {\r\n this.ptr.options.packed = true;\r\n }\r\n\r\n } else if (this.ptr instanceof ProtoBuf.Reflect.Service.Method) {\r\n\r\n if (this.ptr instanceof ProtoBuf.Reflect.Service.RPCMethod) {\r\n res = this.ptr.parent.resolve(this.ptr.requestName, true);\r\n if (!res || !(res instanceof ProtoBuf.Reflect.Message))\r\n throw Error(\"Illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.requestName);\r\n this.ptr.resolvedRequestType = res;\r\n res = this.ptr.parent.resolve(this.ptr.responseName, true);\r\n if (!res || !(res instanceof ProtoBuf.Reflect.Message))\r\n throw Error(\"Illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.responseName);\r\n this.ptr.resolvedResponseType = res;\r\n } else // Should not happen as nothing else is implemented\r\n throw Error(\"illegal service type in \"+this.ptr.toString(true));\r\n\r\n } else if (\r\n !(this.ptr instanceof ProtoBuf.Reflect.Message.OneOf) && // Not built\r\n !(this.ptr instanceof ProtoBuf.Reflect.Extension) && // Not built\r\n !(this.ptr instanceof ProtoBuf.Reflect.Enum.Value) // Built in enum\r\n )\r\n throw Error(\"illegal object in namespace: \"+typeof(this.ptr)+\": \"+this.ptr);\r\n\r\n return this.reset();\r\n };\r\n\r\n /**\r\n * Builds the protocol. This will first try to resolve all definitions and, if this has been successful,\r\n * return the built package.\r\n * @param {(string|Array.<string>)=} path Specifies what to return. If omitted, the entire namespace will be returned.\r\n * @returns {!ProtoBuf.Builder.Message|!Object.<string,*>}\r\n * @throws {Error} If a type could not be resolved\r\n * @expose\r\n */\r\n BuilderPrototype.build = function(path) {\r\n this.reset();\r\n if (!this.resolved)\r\n this.resolveAll(),\r\n this.resolved = true,\r\n this.result = null; // Require re-build\r\n if (this.result === null) // (Re-)Build\r\n this.result = this.ns.build();\r\n if (!path)\r\n return this.result;\r\n var part = typeof path === 'string' ? path.split(\".\") : path,\r\n ptr = this.result; // Build namespace pointer (no hasChild etc.)\r\n for (var i=0; i<part.length; i++)\r\n if (ptr[part[i]])\r\n ptr = ptr[part[i]];\r\n else {\r\n ptr = null;\r\n break;\r\n }\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Similar to {@link ProtoBuf.Builder#build}, but looks up the internal reflection descriptor.\r\n * @param {string=} path Specifies what to return. If omitted, the entire namespace wiil be returned.\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types like fields, defaults to `false`\r\n * @returns {?ProtoBuf.Reflect.T} Reflection descriptor or `null` if not found\r\n */\r\n BuilderPrototype.lookup = function(path, excludeNonNamespace) {\r\n return path ? this.ns.resolve(path, excludeNonNamespace) : this.ns;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this object.\r\n * @return {string} String representation as of \"Builder\"\r\n * @expose\r\n */\r\n BuilderPrototype.toString = function() {\r\n return \"Builder\";\r\n };\r\n\r\n // ----- Base classes -----\r\n // Exist for the sole purpose of being able to \"... instanceof ProtoBuf.Builder.Message\" etc.\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message\r\n */\r\n Builder.Message = function() {};\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Enum\r\n */\r\n Builder.Enum = function() {};\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message\r\n */\r\n Builder.Service = function() {};\r\n\r\n return Builder;\r\n\r\n })(ProtoBuf, ProtoBuf.Lang, ProtoBuf.Reflect);\r\n\r\n /**\r\n * @alias ProtoBuf.Map\r\n * @expose\r\n */\r\n ProtoBuf.Map = (function(ProtoBuf, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Map. A Map is a container that is used to implement map\r\n * fields on message objects. It closely follows the ES6 Map API; however,\r\n * it is distinct because we do not want to depend on external polyfills or\r\n * on ES6 itself.\r\n *\r\n * @exports ProtoBuf.Map\r\n * @param {!ProtoBuf.Reflect.Field} field Map field\r\n * @param {Object.<string,*>=} contents Initial contents\r\n * @constructor\r\n */\r\n var Map = function(field, contents) {\r\n if (!field.map)\r\n throw Error(\"field is not a map\");\r\n\r\n /**\r\n * The field corresponding to this map.\r\n * @type {!ProtoBuf.Reflect.Field}\r\n */\r\n this.field = field;\r\n\r\n /**\r\n * Element instance corresponding to key type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax);\r\n\r\n /**\r\n * Element instance corresponding to value type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax);\r\n\r\n /**\r\n * Internal map: stores mapping of (string form of key) -> (key, value)\r\n * pair.\r\n *\r\n * We provide map semantics for arbitrary key types, but we build on top\r\n * of an Object, which has only string keys. In order to avoid the need\r\n * to convert a string key back to its native type in many situations,\r\n * we store the native key value alongside the value. Thus, we only need\r\n * a one-way mapping from a key type to its string form that guarantees\r\n * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1\r\n * === K2).\r\n *\r\n * @type {!Object<string, {key: *, value: *}>}\r\n */\r\n this.map = {};\r\n\r\n /**\r\n * Returns the number of elements in the map.\r\n */\r\n Object.defineProperty(this, \"size\", {\r\n get: function() { return Object.keys(this.map).length; }\r\n });\r\n\r\n // Fill initial contents from a raw object.\r\n if (contents) {\r\n var keys = Object.keys(contents);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = this.keyElem.valueFromString(keys[i]);\r\n var val = this.valueElem.verifyValue(contents[keys[i]]);\r\n this.map[this.keyElem.valueToString(key)] =\r\n { key: key, value: val };\r\n }\r\n }\r\n };\r\n\r\n var MapPrototype = Map.prototype;\r\n\r\n /**\r\n * Helper: return an iterator over an array.\r\n * @param {!Array<*>} arr the array\r\n * @returns {!Object} an iterator\r\n * @inner\r\n */\r\n function arrayIterator(arr) {\r\n var idx = 0;\r\n return {\r\n next: function() {\r\n if (idx < arr.length)\r\n return { done: false, value: arr[idx++] };\r\n return { done: true };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clears the map.\r\n */\r\n MapPrototype.clear = function() {\r\n this.map = {};\r\n };\r\n\r\n /**\r\n * Deletes a particular key from the map.\r\n * @returns {boolean} Whether any entry with this key was deleted.\r\n */\r\n MapPrototype[\"delete\"] = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n var hadKey = keyValue in this.map;\r\n delete this.map[keyValue];\r\n return hadKey;\r\n };\r\n\r\n /**\r\n * Returns an iterator over [key, value] pairs in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.entries = function() {\r\n var entries = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n entries.push([(entry=this.map[strKeys[i]]).key, entry.value]);\r\n return arrayIterator(entries);\r\n };\r\n\r\n /**\r\n * Returns an iterator over keys in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.keys = function() {\r\n var keys = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n keys.push(this.map[strKeys[i]].key);\r\n return arrayIterator(keys);\r\n };\r\n\r\n /**\r\n * Returns an iterator over values in the map.\r\n * @returns {!Object} The iterator\r\n */\r\n MapPrototype.values = function() {\r\n var values = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n values.push(this.map[strKeys[i]].value);\r\n return arrayIterator(values);\r\n };\r\n\r\n /**\r\n * Iterates over entries in the map, calling a function on each.\r\n * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments.\r\n * @param {Object=} thisArg The `this` value for the callback\r\n */\r\n MapPrototype.forEach = function(cb, thisArg) {\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this);\r\n };\r\n\r\n /**\r\n * Sets a key in the map to the given value.\r\n * @param {*} key The key\r\n * @param {*} value The value\r\n * @returns {!ProtoBuf.Map} The map instance\r\n */\r\n MapPrototype.set = function(key, value) {\r\n var keyValue = this.keyElem.verifyValue(key);\r\n var valValue = this.valueElem.verifyValue(value);\r\n this.map[this.keyElem.valueToString(keyValue)] =\r\n { key: keyValue, value: valValue };\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the value corresponding to a key in the map.\r\n * @param {*} key The key\r\n * @returns {*|undefined} The value, or `undefined` if key not present\r\n */\r\n MapPrototype.get = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n if (!(keyValue in this.map))\r\n return undefined;\r\n return this.map[keyValue].value;\r\n };\r\n\r\n /**\r\n * Determines whether the given key is present in the map.\r\n * @param {*} key The key\r\n * @returns {boolean} `true` if the key is present\r\n */\r\n MapPrototype.has = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n return (keyValue in this.map);\r\n };\r\n\r\n return Map;\r\n })(ProtoBuf, ProtoBuf.Reflect);\r\n\r\n\r\n /**\r\n * Constructs a new empty Builder.\r\n * @param {Object.<string,*>=} options Builder options, defaults to global options set on ProtoBuf\r\n * @return {!ProtoBuf.Builder} Builder\r\n * @expose\r\n */\r\n ProtoBuf.newBuilder = function(options) {\r\n options = options || {};\r\n if (typeof options['convertFieldsToCamelCase'] === 'undefined')\r\n options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase;\r\n if (typeof options['populateAccessors'] === 'undefined')\r\n options['populateAccessors'] = ProtoBuf.populateAccessors;\r\n return new ProtoBuf.Builder(options);\r\n };\r\n\r\n /**\r\n * Loads a .json definition and returns the Builder.\r\n * @param {!*|string} json JSON definition\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadJson = function(json, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = null;\r\n if (!builder || typeof builder !== 'object')\r\n builder = ProtoBuf.newBuilder();\r\n if (typeof json === 'string')\r\n json = JSON.parse(json);\r\n builder[\"import\"](json, filename);\r\n builder.resolveAll();\r\n return builder;\r\n };\r\n\r\n /**\r\n * Loads a .json file and returns the Builder.\r\n * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadJsonFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename);\r\n };\r\n\r\n return ProtoBuf;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/dist/protobuf-light.js\n// module id = 393\n// module chunks = 0 1","/*\r\n Copyright 2013-2014 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz <dcode@dcode.io>\r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.<!ByteBuffer|!ArrayBuffer|!Uint8Array|string>} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i<k; ++i) {\r\n if (!ByteBuffer.isByteBuffer(buffers[i]))\r\n buffers[i] = ByteBuffer.wrap(buffers[i], encoding);\r\n length = buffers[i].limit - buffers[i].offset;\r\n if (length > 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i<k) {\r\n bi = buffers[i++];\r\n length = bi.limit - bi.offset;\r\n if (length <= 0) continue;\r\n bb.view.set(bi.view.subarray(bi.offset, bi.limit), bb.offset);\r\n bb.offset += length;\r\n }\r\n bb.limit = bb.offset;\r\n bb.offset = 0;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Tests if the specified type is a ByteBuffer.\r\n * @param {*} bb ByteBuffer to test\r\n * @returns {boolean} `true` if it is a ByteBuffer, otherwise `false`\r\n * @expose\r\n */\r\n ByteBuffer.isByteBuffer = function(bb) {\r\n return (bb && bb[\"__isByteBuffer__\"]) === true;\r\n };\r\n /**\r\n * Gets the backing buffer type.\r\n * @returns {Function} `Buffer` under node.js, `ArrayBuffer` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.type = function() {\r\n return ArrayBuffer;\r\n };\r\n /**\r\n * Wraps a buffer or a string. Sets the allocated ByteBuffer's {@link ByteBuffer#offset} to `0` and its\r\n * {@link ByteBuffer#limit} to the length of the wrapped data.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string|!Array.<number>} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i<buffer.length; ++i)\r\n bb.view[i] = buffer[i];\r\n } else\r\n throw TypeError(\"Illegal buffer\"); // Otherwise fail\r\n return bb;\r\n };\r\n\r\n /**\r\n * Writes the array as a bitset.\r\n * @param {Array<boolean>} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array<boolean>\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i<k; ++i) {\r\n if (str.charCodeAt(i) === 0)\r\n throw RangeError(\"Illegal str: Contains NULL-characters\");\r\n }\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.<string,*>}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i<k; ++i)\r\n ain[aout[i]] = i;\r\n\r\n /**\r\n * Encodes bytes to base64 char codes.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if\r\n * there are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each encoded char\r\n * code.\r\n */\r\n lxiv.encode = function(src, dst) {\r\n var b, t;\r\n while ((b = src()) !== null) {\r\n dst(aout[(b>>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i<k) {\r\n charCode = str.charCodeAt(i);\r\n if (charCode > 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.<string>} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i<k) {\r\n if (i !== -1) {\r\n b = this.view[i];\r\n if (b < 0x10) hex += \"0\"+b.toString(16).toUpperCase();\r\n else hex += b.toString(16).toUpperCase();\r\n if (columns)\r\n asc += b > 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i<k) {\r\n switch (ch = str.charAt(i++)) {\r\n case '!':\r\n if (!noAssert) {\r\n if (ho || hm || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = hl = true;\r\n }\r\n bb.offset = bb.markedOffset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '|':\r\n if (!noAssert) {\r\n if (ho || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hl = true;\r\n }\r\n bb.offset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '[':\r\n if (!noAssert) {\r\n if (ho || hm) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = true;\r\n }\r\n bb.offset = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '<':\r\n if (!noAssert) {\r\n if (ho) {\r\n fail = true;\r\n break;\r\n }\r\n ho = true;\r\n }\r\n bb.offset = j;\r\n rs = false;\r\n break;\r\n case ']':\r\n if (!noAssert) {\r\n if (hl || hm) {\r\n fail = true;\r\n break;\r\n }\r\n hl = hm = true;\r\n }\r\n bb.limit = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '>':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j<bb.buffer.byteLength)\r\n throw TypeError(\"Illegal str: Not a debug encoded string (is it hex?) \"+j+\" < \"+k);\r\n }\r\n return bb;\r\n };\r\n\r\n // encodings/hex\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a hex encoded string.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Hex encoded string\r\n * @expose\r\n */\r\n ByteBufferPrototype.toHex = function(begin, end) {\r\n begin = typeof begin === 'undefined' ? this.offset : begin;\r\n end = typeof end === 'undefined' ? this.limit : end;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i<k; i+=2) {\r\n b = parseInt(str.substring(i, i+2), 16);\r\n if (!noAssert)\r\n if (!isFinite(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.<string,*>}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.<number>} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bytebuffer/dist/bytebuffer.js\n// module id = 394\n// module chunks = 0 1","/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\n Long.prototype.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n /**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\n LongPrototype.toBytes = function(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n }\r\n\r\n /**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\n LongPrototype.toBytesLE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n (lo >>> 8) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 24) & 0xff,\r\n hi & 0xff,\r\n (hi >>> 8) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 24) & 0xff\r\n ];\r\n }\r\n\r\n /**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\n LongPrototype.toBytesBE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n (hi >>> 24) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 8) & 0xff,\r\n hi & 0xff,\r\n (lo >>> 24) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 8) & 0xff,\r\n lo & 0xff\r\n ];\r\n }\r\n\r\n return Long;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/long/dist/long.js\n// module id = 395\n// module chunks = 0 1","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// fs (ignored)\n// module id = 396\n// module chunks = 0 1","'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 * @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 {*} 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 * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @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 * @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 * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\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 * @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 {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\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 {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\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 {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @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 clearEvent(this, 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 clearEvent(this, 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 clearEvent(this, 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 * @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]) clearEvent(this, evt);\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// 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// WEBPACK FOOTER //\n// ./node_modules/leancloud-realtime/node_modules/eventemitter3/index.js","module.exports = require(\"regenerator-runtime\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/regenerator/index.js\n// module id = 398\n// module chunks = 0 1","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regenerator-runtime/runtime.js\n// module id = 399\n// module chunks = 0 1","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/asyncToGenerator.js\n// module id = 400\n// module chunks = 0 1","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toConsumableArray.js\n// module id = 401\n// module chunks = 0 1","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\n// module id = 402\n// module chunks = 0 1","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/nonIterableSpread.js\n// module id = 403\n// module chunks = 0 1","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/defineProperty.js\n// module id = 404\n// module chunks = 0 1","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\n// module id = 405\n// module chunks = 0 1","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\n// module id = 406\n// module chunks = 0 1","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/assertThisInitialized.js\n// module id = 407\n// module chunks = 0 1","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/inheritsLoose.js\n// module id = 408\n// module chunks = 0 1","var arrayShuffle = require('./_arrayShuffle'),\n baseShuffle = require('./_baseShuffle'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nmodule.exports = shuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/shuffle.js\n// module id = 409\n// module chunks = 0 1","var copyArray = require('./_copyArray'),\n shuffleSelf = require('./_shuffleSelf');\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nmodule.exports = arrayShuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayShuffle.js\n// module id = 410\n// module chunks = 0 1","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_copyArray.js\n// module id = 411\n// module chunks = 0 1","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseRandom.js\n// module id = 412\n// module chunks = 0 1","var shuffleSelf = require('./_shuffleSelf'),\n values = require('./values');\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nmodule.exports = baseShuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseShuffle.js\n// module id = 413\n// module chunks = 0 1","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseValues.js\n// module id = 414\n// module chunks = 0 1","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayMap.js\n// module id = 415\n// module chunks = 0 1","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/keys.js\n// module id = 416\n// module chunks = 0 1","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayLikeKeys.js\n// module id = 417\n// module chunks = 0 1","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseTimes.js\n// module id = 418\n// module chunks = 0 1","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArguments.js\n// module id = 419\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsArguments.js\n// module id = 420\n// module chunks = 0 1","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getRawTag.js\n// module id = 421\n// module chunks = 0 1","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_objectToString.js\n// module id = 422\n// module chunks = 0 1","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isBuffer.js\n// module id = 423\n// module chunks = 0 1","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/stubFalse.js\n// module id = 424\n// module chunks = 0 1","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isIndex.js\n// module id = 425\n// module chunks = 0 1","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isTypedArray.js\n// module id = 426\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsTypedArray.js\n// module id = 427\n// module chunks = 0 1","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseUnary.js\n// module id = 428\n// module chunks = 0 1","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nodeUtil.js\n// module id = 429\n// module chunks = 0 1","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseKeys.js\n// module id = 430\n// module chunks = 0 1","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isPrototype.js\n// module id = 431\n// module chunks = 0 1","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeKeys.js\n// module id = 432\n// module chunks = 0 1","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArrayLike.js\n// module id = 433\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isFunction.js\n// module id = 434\n// module chunks = 0 1","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObject.js\n// module id = 435\n// module chunks = 0 1","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toArray.js\n// module id = 436\n// module chunks = 0 1","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayWithHoles.js\n// module id = 437\n// module chunks = 0 1","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/nonIterableRest.js\n// module id = 438\n// module chunks = 0 1","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 Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/createClass.js\n// module id = 439\n// module chunks = 0 1","function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\nmodule.exports = _applyDecoratedDescriptor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\n// module id = 440\n// module chunks = 0 1","/*\n\n Javascript State Machine Library - https://github.com/jakesgordon/javascript-state-machine\n\n Copyright (c) 2012, 2013, 2014, 2015, Jake Gordon and contributors\n Released under the MIT license - https://github.com/jakesgordon/javascript-state-machine/blob/master/LICENSE\n\n*/\n\n(function () {\n\n var StateMachine = {\n\n //---------------------------------------------------------------------------\n\n VERSION: \"2.4.0\",\n\n //---------------------------------------------------------------------------\n\n Result: {\n SUCCEEDED: 1, // the event transitioned successfully from one state to another\n NOTRANSITION: 2, // the event was successfull but no state transition was necessary\n CANCELLED: 3, // the event was cancelled by the caller in a beforeEvent callback\n PENDING: 4 // the event is asynchronous and the caller is in control of when the transition occurs\n },\n\n Error: {\n INVALID_TRANSITION: 100, // caller tried to fire an event that was innapropriate in the current state\n PENDING_TRANSITION: 200, // caller tried to fire an event while an async transition was still pending\n INVALID_CALLBACK: 300 // caller provided callback function threw an exception\n },\n\n WILDCARD: '*',\n ASYNC: 'async',\n\n //---------------------------------------------------------------------------\n\n create: function(cfg, target) {\n\n var initial = (typeof cfg.initial == 'string') ? { state: cfg.initial } : cfg.initial; // allow for a simple string, or an object with { state: 'foo', event: 'setup', defer: true|false }\n var terminal = cfg.terminal || cfg['final'];\n var fsm = target || cfg.target || {};\n var events = cfg.events || [];\n var callbacks = cfg.callbacks || {};\n var map = {}; // track state transitions allowed for an event { event: { from: [ to ] } }\n var transitions = {}; // track events allowed from a state { state: [ event ] }\n\n var add = function(e) {\n var from = Array.isArray(e.from) ? e.from : (e.from ? [e.from] : [StateMachine.WILDCARD]); // allow 'wildcard' transition if 'from' is not specified\n map[e.name] = map[e.name] || {};\n for (var n = 0 ; n < from.length ; n++) {\n transitions[from[n]] = transitions[from[n]] || [];\n transitions[from[n]].push(e.name);\n\n map[e.name][from[n]] = e.to || from[n]; // allow no-op transition if 'to' is not specified\n }\n if (e.to)\n transitions[e.to] = transitions[e.to] || [];\n };\n\n if (initial) {\n initial.event = initial.event || 'startup';\n add({ name: initial.event, from: 'none', to: initial.state });\n }\n\n for(var n = 0 ; n < events.length ; n++)\n add(events[n]);\n\n for(var name in map) {\n if (map.hasOwnProperty(name))\n fsm[name] = StateMachine.buildEvent(name, map[name]);\n }\n\n for(var name in callbacks) {\n if (callbacks.hasOwnProperty(name))\n fsm[name] = callbacks[name]\n }\n\n fsm.current = 'none';\n fsm.is = function(state) { return Array.isArray(state) ? (state.indexOf(this.current) >= 0) : (this.current === state); };\n fsm.can = function(event) { return !this.transition && (map[event] !== undefined) && (map[event].hasOwnProperty(this.current) || map[event].hasOwnProperty(StateMachine.WILDCARD)); }\n fsm.cannot = function(event) { return !this.can(event); };\n fsm.transitions = function() { return (transitions[this.current] || []).concat(transitions[StateMachine.WILDCARD] || []); };\n fsm.isFinished = function() { return this.is(terminal); };\n fsm.error = cfg.error || function(name, from, to, args, error, msg, e) { throw e || msg; }; // default behavior when something unexpected happens is to throw an exception, but caller can override this behavior if desired (see github issue #3 and #17)\n fsm.states = function() { return Object.keys(transitions).sort() };\n\n if (initial && !initial.defer)\n fsm[initial.event]();\n\n return fsm;\n\n },\n\n //===========================================================================\n\n doCallback: function(fsm, func, name, from, to, args) {\n if (func) {\n try {\n return func.apply(fsm, [name, from, to].concat(args));\n }\n catch(e) {\n return fsm.error(name, from, to, args, StateMachine.Error.INVALID_CALLBACK, \"an exception occurred in a caller-provided callback function\", e);\n }\n }\n },\n\n beforeAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbeforeevent'], name, from, to, args); },\n afterAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafterevent'] || fsm['onevent'], name, from, to, args); },\n leaveAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleavestate'], name, from, to, args); },\n enterAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenterstate'] || fsm['onstate'], name, from, to, args); },\n changeState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onchangestate'], name, from, to, args); },\n\n beforeThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbefore' + name], name, from, to, args); },\n afterThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafter' + name] || fsm['on' + name], name, from, to, args); },\n leaveThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleave' + from], name, from, to, args); },\n enterThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenter' + to] || fsm['on' + to], name, from, to, args); },\n\n beforeEvent: function(fsm, name, from, to, args) {\n if ((false === StateMachine.beforeThisEvent(fsm, name, from, to, args)) ||\n (false === StateMachine.beforeAnyEvent( fsm, name, from, to, args)))\n return false;\n },\n\n afterEvent: function(fsm, name, from, to, args) {\n StateMachine.afterThisEvent(fsm, name, from, to, args);\n StateMachine.afterAnyEvent( fsm, name, from, to, args);\n },\n\n leaveState: function(fsm, name, from, to, args) {\n var specific = StateMachine.leaveThisState(fsm, name, from, to, args),\n general = StateMachine.leaveAnyState( fsm, name, from, to, args);\n if ((false === specific) || (false === general))\n return false;\n else if ((StateMachine.ASYNC === specific) || (StateMachine.ASYNC === general))\n return StateMachine.ASYNC;\n },\n\n enterState: function(fsm, name, from, to, args) {\n StateMachine.enterThisState(fsm, name, from, to, args);\n StateMachine.enterAnyState( fsm, name, from, to, args);\n },\n\n //===========================================================================\n\n buildEvent: function(name, map) {\n return function() {\n\n var from = this.current;\n var to = map[from] || (map[StateMachine.WILDCARD] != StateMachine.WILDCARD ? map[StateMachine.WILDCARD] : from) || from;\n var args = Array.prototype.slice.call(arguments); // turn arguments into pure array\n\n if (this.transition)\n return this.error(name, from, to, args, StateMachine.Error.PENDING_TRANSITION, \"event \" + name + \" inappropriate because previous transition did not complete\");\n\n if (this.cannot(name))\n return this.error(name, from, to, args, StateMachine.Error.INVALID_TRANSITION, \"event \" + name + \" inappropriate in current state \" + this.current);\n\n if (false === StateMachine.beforeEvent(this, name, from, to, args))\n return StateMachine.Result.CANCELLED;\n\n if (from === to) {\n StateMachine.afterEvent(this, name, from, to, args);\n return StateMachine.Result.NOTRANSITION;\n }\n\n // prepare a transition method for use EITHER lower down, or by caller if they want an async transition (indicated by an ASYNC return value from leaveState)\n var fsm = this;\n this.transition = function() {\n fsm.transition = null; // this method should only ever be called once\n fsm.current = to;\n StateMachine.enterState( fsm, name, from, to, args);\n StateMachine.changeState(fsm, name, from, to, args);\n StateMachine.afterEvent( fsm, name, from, to, args);\n return StateMachine.Result.SUCCEEDED;\n };\n this.transition.cancel = function() { // provide a way for caller to cancel async transition if desired (issue #22)\n fsm.transition = null;\n StateMachine.afterEvent(fsm, name, from, to, args);\n }\n\n var leave = StateMachine.leaveState(this, name, from, to, args);\n if (false === leave) {\n this.transition = null;\n return StateMachine.Result.CANCELLED;\n }\n else if (StateMachine.ASYNC === leave) {\n return StateMachine.Result.PENDING;\n }\n else {\n if (this.transition) // need to check in case user manually called transition() but forgot to return StateMachine.ASYNC\n return this.transition();\n }\n\n };\n }\n\n }; // StateMachine\n\n //===========================================================================\n\n //======\n // NODE\n //======\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = StateMachine;\n }\n exports.StateMachine = StateMachine;\n }\n //============\n // AMD/REQUIRE\n //============\n else if (typeof define === 'function' && define.amd) {\n define(function(require) { return StateMachine; });\n }\n //========\n // BROWSER\n //========\n else if (typeof window !== 'undefined') {\n window.StateMachine = StateMachine;\n }\n //===========\n // WEB WORKER\n //===========\n else if (typeof self !== 'undefined') {\n self.StateMachine = StateMachine;\n }\n\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/javascript-state-machine/state-machine.js\n// module id = 441\n// module chunks = 0 1","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/typeof.js\n// module id = 442\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isPlainObject.js\n// module id = 443\n// module chunks = 0 1","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getPrototype.js\n// module id = 444\n// module chunks = 0 1","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('leancloud-realtime/core')) :\n typeof define === 'function' && define.amd ? define('live-query', ['exports', 'leancloud-realtime/core'], factory) :\n (global = global || self, factory(global.AV = global.AV || {}, global.AV));\n}(this, function (exports, core) { 'use strict';\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n /* eslint-disable import/no-unresolved */\n\n if (!core.Protocals) {\n throw new Error('LeanCloud Realtime SDK not installed');\n }\n\n var CommandType = core.Protocals.CommandType,\n GenericCommand = core.Protocals.GenericCommand,\n AckCommand = core.Protocals.AckCommand;\n\n var warn = function warn(error) {\n return console.warn(error.message);\n };\n\n var LiveQueryClient =\n /*#__PURE__*/\n function (_EventEmitter) {\n _inheritsLoose(LiveQueryClient, _EventEmitter);\n\n function LiveQueryClient(appId, subscriptionId, connection) {\n var _this;\n\n _this = _EventEmitter.call(this) || this;\n _this._appId = appId;\n _this.id = subscriptionId;\n _this._connection = connection;\n _this._eventemitter = new core.EventEmitter();\n _this._querys = new Set();\n return _this;\n }\n\n var _proto = LiveQueryClient.prototype;\n\n _proto._send = function _send(cmd) {\n var _this$_connection;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_this$_connection = this._connection).send.apply(_this$_connection, [Object.assign(cmd, {\n appId: this._appId,\n installationId: this.id,\n service: 1\n })].concat(args));\n };\n\n _proto._open = function _open() {\n return this._send(new GenericCommand({\n cmd: CommandType.login\n }));\n };\n\n _proto.close = function close() {\n var _ee = this._eventemitter;\n\n _ee.emit('beforeclose');\n\n return this._send(new GenericCommand({\n cmd: CommandType.logout\n })).then(function () {\n return _ee.emit('close');\n });\n };\n\n _proto.register = function register(liveQuery) {\n this._querys.add(liveQuery);\n };\n\n _proto.deregister = function deregister(liveQuery) {\n var _this2 = this;\n\n this._querys.delete(liveQuery);\n\n setTimeout(function () {\n if (!_this2._querys.size) _this2.close().catch(warn);\n }, 0);\n };\n\n _proto._dispatchCommand = function _dispatchCommand(command) {\n if (command.cmd !== CommandType.data) {\n this.emit('unhandledmessage', command);\n return core.Promise.resolve();\n }\n\n return this._dispatchDataCommand(command);\n };\n\n _proto._dispatchDataCommand = function _dispatchDataCommand(_ref) {\n var _ref$dataMessage = _ref.dataMessage,\n ids = _ref$dataMessage.ids,\n msg = _ref$dataMessage.msg;\n this.emit('message', msg.map(function (_ref2) {\n var data = _ref2.data;\n return JSON.parse(data);\n })); // send ack\n\n var command = new GenericCommand({\n cmd: CommandType.ack,\n ackMessage: new AckCommand({\n ids: ids\n })\n });\n return this._send(command, false).catch(warn);\n };\n\n return LiveQueryClient;\n }(core.EventEmitter);\n\n var finalize = function finalize(callback) {\n return [// eslint-disable-next-line no-sequences\n function (value) {\n return callback(), value;\n }, function (error) {\n callback();\n throw error;\n }];\n };\n\n var onRealtimeCreate = function onRealtimeCreate(realtime) {\n /* eslint-disable no-param-reassign */\n realtime._liveQueryClients = {};\n\n realtime.createLiveQueryClient = function (subscriptionId) {\n var _realtime$_open$then;\n\n if (realtime._liveQueryClients[subscriptionId] !== undefined) {\n return core.Promise.resolve(realtime._liveQueryClients[subscriptionId]);\n }\n\n var promise = (_realtime$_open$then = realtime._open().then(function (connection) {\n var client = new LiveQueryClient(realtime._options.appId, subscriptionId, connection);\n connection.on('reconnect', function () {\n return client._open().then(function () {\n return client.emit('reconnect');\n }, function (error) {\n return client.emit('reconnecterror', error);\n });\n });\n\n client._eventemitter.on('beforeclose', function () {\n delete realtime._liveQueryClients[client.id];\n }, realtime);\n\n client._eventemitter.on('close', function () {\n realtime._deregister(client);\n }, realtime);\n\n return client._open().then(function () {\n realtime._liveQueryClients[client.id] = client;\n\n realtime._register(client);\n\n return client;\n });\n })).then.apply(_realtime$_open$then, _toConsumableArray(finalize(function () {\n if (realtime._deregisterPending) realtime._deregisterPending(promise);\n })));\n\n realtime._liveQueryClients[subscriptionId] = promise;\n if (realtime._registerPending) realtime._registerPending(promise);\n return promise;\n };\n /* eslint-enable no-param-reassign */\n\n };\n\n var beforeCommandDispatch = function beforeCommandDispatch(command, realtime) {\n var isLiveQueryCommand = command.installationId && command.service === 1;\n if (!isLiveQueryCommand) return true;\n var targetClient = realtime._liveQueryClients[command.installationId];\n\n if (targetClient) {\n targetClient._dispatchCommand(command).catch(function (error) {\n return console.warn(error);\n });\n } else {\n console.warn('Unexpected message received without any live client match: %O', command);\n }\n\n return false;\n }; // eslint-disable-next-line import/prefer-default-export\n\n\n var LiveQueryPlugin = {\n name: 'leancloud-realtime-plugin-live-query',\n onRealtimeCreate: onRealtimeCreate,\n beforeCommandDispatch: beforeCommandDispatch\n };\n\n exports.LiveQueryPlugin = LiveQueryPlugin;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=live-query.js.map\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/leancloud-realtime-plugin-live-query/dist/live-query.js","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/array/from.js\n// module id = 446\n// module chunks = 0 1","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/array/from.js\n// module id = 447\n// module chunks = 0 1","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.array.from.js\n// module id = 448\n// module chunks = 0 1"],"sourceRoot":""}
\No newline at end of file